我正在使用 NetBeans,并且我正在将常见的类分解到一个库中。我想引用图书馆的类(class)。我可以通过告诉 NetBeans 一个项目依赖于另一个项目(后者是一个 Java 库项目)来轻松完成此操作。
该库项目名为“ReVueLib”。我在那里有一个名为“Stream”的文件夹,其中有一个类“StreamClient”。以下是重要内容的删节版本:
package Stream;
class StreamClient {
public void StreamClient() {}
};
我有另一个名为“ReVueServer”的项目,主要如下所示:
package revueserver;
import Stream.StreamClient;
public class ReVueServer {
public static void main(String[] args) {
Class c = StreamClient.class;
System.out.println(c.getName());
}
};
现在,如果我运行它,它会正常工作并打印出“Stream.StreamClient”。但是假设我想在不导入的情况下引用这个类。原因是在另一个项目中,我想将 Network.StreamClient 子类化为一个名为 StreamClient 的类。这将帮助我避免重构大量现有代码。换句话说,我利用命名空间分离来子类化并重用旧名称。
不幸的是,如果我取出导入,“Stream.StreamClient”将不起作用,“ReVueLib.Stream.StreamClient”或我尝试过的其他任何东西也不起作用。
我需要使用什么 FQCN 才能引用此库类而不“导入”它?
最佳答案
包中类的正确名称包括包的全名。 import 语句可以让您避免编写前缀,但这是一个编译时技巧。这就是为什么您的程序会打印完全限定名称 Stream.StreamClient
,即使您的程序通过短名称 StreamClient
引用该类。
您始终可以重写程序以使用所有类的全名:
Class c = Stream.StreamClient.class;
甚至
java.lang.Class c = Stream.StreamClient.class;
关于Java:如何在*没有* 'import' 语句的情况下引用库依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33679670/