Java:如何在*没有* 'import' 语句的情况下引用库依赖项?

标签 java netbeans import

我正在使用 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/

相关文章:

python - 自动导入不遵循 PEP8

java - 最右边的 JButton 在 JPanel 中必须始终可见

Java 程序特化 - 它是什么?我不明白

java - 如何将 Swing 组件从 JFrame 移动到 JScrollPane?

java - 如何在netbeans中编译jedit

java - 如何在 Intellij IDea 的测试中不删除静态导入?

java - org.openqa.selenium.SessionNotCreatedException : Unable to find a matching set of capabilities

java - JAVA中如何进行3线程通信?

NetBeans 和 build.xml

mysql - 将 AUTO_INCRMENT id 列添加到大型 MySQL 表时出现问题