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

时间:2015-04-28 02:17:59

标签: java interface

我是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 {...

我有两个问题:

  1. 是否需要导入MyInterface() MyImplementation()?如果没有,那么它是否需要链接 编译时手动?
  2. 如果导入MyInterface(),则为 它还需要导入接口所需的类型,或 MyInterface.java的导入是否会解决这个问题?

2 个答案:

答案 0 :(得分:3)

Java中的导入基本上是告诉编译器在编写MyInterface时你的意思是a.b.c.interfaces.MyInterface。绝对可以在不使用导入的情况下编写Java代码,但它非常冗长且看起来很乱。

您需要导入您要使用的任何类型,这些类型与您正在撰写的课程不在同一个包中,或导入java.lang,因为MyInterface位于a.b.c.interfacesMyImplementation中{}} a.b.c.model您需要导入它。

如果您在代码中的任何位置编写类型,则需要导入MyInterface正在使用的类 - 并且由于您正在实施界面需要在方法声明中编写它们的类型。没有办法在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()传递返回值,编译器已经知道那是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);
     }
}

答案 1 :(得分:-3)

Ans提出第一个问题,你必须导入界面,在课堂上你必须实现你的界面。

关于第二个问题,您只需要导入MyInterface。 JVM将负责其余工作。

我强烈建议你把oops概念作为一个非常基本的问题。

并且还使用像Eclipse这样的任何IDE。