为什么需要在界面中导入库

Why is it needed to import libraries in an interface

我是 Java 的新手,很抱歉,如果这是一个愚蠢的问题,我有点困惑为什么我们需要在界面中导入库。

我理解为什么您需要在 classes 或主要方法中导入一个库,因为您实际上正在使用这些库。但是,如果我错了,请纠正我,在接口中,您只是在声明带有参数的方法而实际上没有 'doing' 任何内容。只有在单独的 class?

中实现接口时才真正使用它

例如:

import javax.sql.DataSource;

public interface ExampleInterface {

    public void setDataSource(DataSource ds);

}

为什么要在这里导入DataSource?

In an interface, you're just declaring the methods with parameters without actually 'doing' anything with it

是的,但你仍然声明它们。所以如果你想让它们被识别,你需要导入相应的库。在您的示例中,您定义了一个方法:

public void setDataSource(DataSource ds); 

在您的界面中。所以除非你导入javax.sql.DataSource,否则你在setDataSource中声明的参数类型将不会被识别。

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

但是您需要做一个或另一个来指定您所指的 exact class/interface。编译器不接受任何非唯一的简单名称。

如果您正在使用 classes/interfaces/etc,您可能仍需要使用 FQN。具有相同的名称,因为由于命名冲突我们无法导入两者:

import javax.sql.DataSource;

public interface ExampleInterface {

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

就是指定你在接口中使用什么数据类型,来自哪个包,在一个项目中可能有不同种类的同名数据,所以需要显式指定,是什么类型进一步实施需要数据源。