为什么需要在接口中导入库

时间:2017-08-01 06:58:28

标签: java interface libraries

我对Java很陌生,对不起,如果这是一个愚蠢的问题,我有点困惑为什么我们需要在界面中导入库。

我理解为什么在实际使用库时需要在类或主方法中导入库。但是,如果我错了,请在界面中纠正我,你只是用参数声明这些方法,而不是实际做错了。什么都有它。在单独的类中实现接口时,实际上只使用它吗?

例如:

import javax.sql.DataSource;

public interface ExampleInterface {

    public void setDataSource(DataSource ds);

}

为什么需要在这里导入DataSource?

3 个答案:

答案 0 :(得分:3)

  

在一个界面中,你只是用参数声明方法而不用它实际“做”任何事情

是的,但您仍然声明它们。因此,如果您希望它们可识别,则需要导入相应的库。在您的示例中,您定义了一个方法:

public void setDataSource(DataSource ds); 

在您的界面中。因此,除非您导入javax.sql.DataSource,否则您在setDataSource中声明的参数类型将无法识别。

答案 1 :(得分:2)

您不需要导入。您可以在任何地方使用javax.sql.DataSource之类的完全限定名称,而不仅仅使用DataSource

但是你需要做一个或另一个来指定你所指的完全类/接口。编译器不接受任何事物的非唯一简单名称。

如果您正在使用类/接口/等,则可能仍需要使用FQN。具有相同的名称,因为我们无法导入两者,因为命名冲突:

import javax.sql.DataSource;

public interface ExampleInterface {

    public void setDataSource(DataSource ds);
    public void setActivationDataSource(javax.activation.DataSource ds);
}

答案 2 :(得分:1)

要指定您将在接口中使用哪种数据类型,从哪个包中,在一个项目中可能存在具有相同名称的不同类型的数据,因此需要明确指定哪种类型的DataSource需要进一步实施。