为什么需要在界面中导入库
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);
}
就是指定你在接口中使用什么数据类型,来自哪个包,在一个项目中可能有不同种类的同名数据,所以需要显式指定,是什么类型进一步实施需要数据源。
我是 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);
}
就是指定你在接口中使用什么数据类型,来自哪个包,在一个项目中可能有不同种类的同名数据,所以需要显式指定,是什么类型进一步实施需要数据源。