从 Java 包中访问顶级 类

Accessing top level classes from within a Java package

假设我们有一个位于文件夹 project 的项目,源代码位于 project/src

我们在 project/src/package 和 类

有一个包裹 package

现在我们想在PackageClass中唤起TopClass的构造函数,但是这个构造函数(虽然声明为public)似乎在包内部是不可见的。

我们需要以某种方式导入它吗?我们如何访问它?

指定从未命名包中导入类型是编译时错误。

因此,为了实现您正在尝试做的事情,您必须使用某种间接 class 访问,例如反射 API:

Class sampleClass = Class.forName("SampleClass");
Method sampleMethod = sampleClass.getMethod("sampleMethod" , new Class[] { String.class });
sampleMethod.invoke(sampleClass.newInstance(), "It works!");

使用默认包 class:

public class SampleClass {
    public void sampleMethod(String str) {
        System.out.println(str);
    }
}