如何正确处理不同包中的 java 接口?
How to properly deal with java interface in different package?
我是 Java 的新手,我有一个接口包。每个接口都有一些接口声明中使用的类型的导入。
// MyInterface.java...
package a.b.c.interfaces;
import java.math.BigDecimal;
import java.util.List;
import java.util.Set;
public interface MyInterface() { ...
然后我得到了一个包含模型的包,在其中,我试图创建一个 class 来实现 MyInterface()
.
// MyImplementation.java...
package a.b.c.models;
public class MyImplementation implements MyInterface {...
我有两个问题:
- 是否需要导入
MyInterface()
MyImplementation()
?如果不是,是否需要链接
在编译期间手动?
- 如果
MyInterface()
被导入,是
还需要导入接口所需的类型,或者
MyInterface.java
的导入会解决这个问题吗?
回答你的第一个问题,你必须导入接口,然后 class 你必须实现你的接口。
关于你的第二个问题,你只需导入MyInterface
即可。 JVM 会处理剩下的事情。
我强烈建议你把 oops 概念作为它太基本的问题。
并且还可以使用任何 IDE,例如 Eclipse。
Java 中的导入基本上是一种告诉编译器当您编写 MyInterface
时您真正指的是 a.b.c.interfaces.MyInterface
的方式。 Java 代码完全可以不使用 import 但它非常冗长而且看起来很乱。
您需要导入您要使用的任何类型,这些类型与您正在编写的 class 不在同一个包中,或者不在 java.lang
中,因为 MyInterface
在a.b.c.interfaces
和 MyImplementation
在 a.b.c.model
你需要导入它。
如果您在代码中的任何地方编写 type,您确实需要导入 MyInterface
正在使用的 classes - 因为您在实现接口时,您需要在方法声明中写入它们的类型。在 Java.
中无法使用与另一个 class 相同的导入
这是一个我们不需要导入类型的用法示例:
UsesBigInteger.java:
import java.math.BigInteger;
public class UsesBigInteger {
public BigInteger get() {
return BigInteger.TEN;
}
}
Main.java
public class Main {
public static void Main(String[] args) {
UsesBigInteger use = new UsesBigInteger();
System.out.println(use.get());
}
}
我们不必在这里导入 java.math.BigInteger
的原因是我们实际上从未在任何地方写 BigInteger
所以我们不需要告诉编译器我们的意思 - 我们只是从 UsesBigInteger.get()
传递 return 值,编译器已经知道这是一个 java.math.BigInteger
.
如果我们想保留对 BigInteger
的引用,我们需要导入它:
Main.java
import java.math.BigInteger;
public class Main {
public static void Main(String[] args) {
UsesBigInteger use = new UsesBigInteger();
BigInteger it = use.get();
System.out.println(it);
}
}
我是 Java 的新手,我有一个接口包。每个接口都有一些接口声明中使用的类型的导入。
// MyInterface.java...
package a.b.c.interfaces;
import java.math.BigDecimal;
import java.util.List;
import java.util.Set;
public interface MyInterface() { ...
然后我得到了一个包含模型的包,在其中,我试图创建一个 class 来实现 MyInterface()
.
// MyImplementation.java...
package a.b.c.models;
public class MyImplementation implements MyInterface {...
我有两个问题:
- 是否需要导入
MyInterface()
MyImplementation()
?如果不是,是否需要链接 在编译期间手动? - 如果
MyInterface()
被导入,是 还需要导入接口所需的类型,或者MyInterface.java
的导入会解决这个问题吗?
回答你的第一个问题,你必须导入接口,然后 class 你必须实现你的接口。
关于你的第二个问题,你只需导入MyInterface
即可。 JVM 会处理剩下的事情。
我强烈建议你把 oops 概念作为它太基本的问题。
并且还可以使用任何 IDE,例如 Eclipse。
Java 中的导入基本上是一种告诉编译器当您编写 MyInterface
时您真正指的是 a.b.c.interfaces.MyInterface
的方式。 Java 代码完全可以不使用 import 但它非常冗长而且看起来很乱。
您需要导入您要使用的任何类型,这些类型与您正在编写的 class 不在同一个包中,或者不在 java.lang
中,因为 MyInterface
在a.b.c.interfaces
和 MyImplementation
在 a.b.c.model
你需要导入它。
如果您在代码中的任何地方编写 type,您确实需要导入 MyInterface
正在使用的 classes - 因为您在实现接口时,您需要在方法声明中写入它们的类型。在 Java.
这是一个我们不需要导入类型的用法示例:
UsesBigInteger.java:
import java.math.BigInteger;
public class UsesBigInteger {
public BigInteger get() {
return BigInteger.TEN;
}
}
Main.java
public class Main {
public static void Main(String[] args) {
UsesBigInteger use = new UsesBigInteger();
System.out.println(use.get());
}
}
我们不必在这里导入 java.math.BigInteger
的原因是我们实际上从未在任何地方写 BigInteger
所以我们不需要告诉编译器我们的意思 - 我们只是从 UsesBigInteger.get()
传递 return 值,编译器已经知道这是一个 java.math.BigInteger
.
如果我们想保留对 BigInteger
的引用,我们需要导入它:
Main.java
import java.math.BigInteger;
public class Main {
public static void Main(String[] args) {
UsesBigInteger use = new UsesBigInteger();
BigInteger it = use.get();
System.out.println(it);
}
}