我对Java很陌生,对不起,如果这是一个愚蠢的问题,我有点困惑为什么我们需要在界面中导入库。
我理解为什么在实际使用库时需要在类或主方法中导入库。但是,如果我错了,请在界面中纠正我,你只是用参数声明这些方法,而不是实际做错了。什么都有它。在单独的类中实现接口时,实际上只使用它吗?
例如:
import javax.sql.DataSource;
public interface ExampleInterface {
public void setDataSource(DataSource ds);
}
为什么需要在这里导入DataSource?
答案 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需要进一步实施。