如何正确处理不同包中的java接口?

woobm2wo  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(523)

我是java新手,我有一个接口包。对于接口声明中使用的类型,每个接口都有许多导入。

// MyInterface.java...

package a.b.c.interfaces;

import java.math.BigDecimal;
import java.util.List;
import java.util.Set;

public interface MyInterface() { ...

然后我得到了一个包含模型的包,在其中,我试图创建一个实现 MyInterface() .

// MyImplementation.java...

package a.b.c.models;

public class MyImplementation implements MyInterface {...

我有两个问题:
MyInterface() 需要导入到 MyImplementation() ? 如果没有,那么是否需要在编译期间手动链接它?
如果 MyInterface() 是否还需要导入接口所需的类型,或者 MyInterface.java 处理好这个?

k10s72fa

k10s72fa1#

对于你的第一个问题,你必须导入接口,在类中你必须实现你的接口。
至于你的第二个问题,你只需要导入 MyInterface . jvm将处理其余部分。
我强烈建议你把面向对象的概念作为一个太基本的问题。
也可以使用像eclipse这样的ide。

tct7dpnv

tct7dpnv2#

java中的导入基本上是告诉编译器当您编写 MyInterface 你真的是说 a.b.c.interfaces.MyInterface . 不用导入就可以编写java代码,但是它非常冗长,看起来很混乱。
您需要导入任何您想要使用的类型,这些类型与您正在编写或使用的类不在同一个包中 java.lang 所以自从 MyInterfacea.b.c.interfaces 以及 MyImplementationa.b.c.model 你需要导入它。
您确实需要导入 MyInterface 如果您在代码中的任何地方编写它们的类型,则使用-由于您要实现接口,因此需要在方法声明中编写它们的类型。在java中,无法使用与另一个类相同的导入。
下面是一个不需要导入类型的示例:
usesbiginteger.java文件:

import java.math.BigInteger;

public class UsesBigInteger {
    public BigInteger get() {
        return BigInteger.TEN;
    }
}

主.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() 编译器已经知道这是一个 java.math.BigInteger .
如果我们想保留 BigInteger 我们需要导入它:
主.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);
     }
}

相关问题