从Java包中访问顶级类

时间:2015-03-05 10:41:51

标签: java package visibility

假设我们有一个位于project文件夹的项目,其中的来源为project/src

我们在package和类

上有一个包project/src/package
    TopClass和中
  • project/src/TopClass.java {li> PackageClass project/src/package/PackageClass.java

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

我们需要以某种方式导入它吗?我们怎样才能访问它?

1 个答案:

答案 0 :(得分:1)

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

因此,为了实现您想要做的事情,您必须使用某种间接类访问,例如反思API:

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

使用默认包类:

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