从 Java 包中访问顶级 类
Accessing top level classes from within a Java package
假设我们有一个位于文件夹 project
的项目,源代码位于 project/src
。
我们在 project/src/package
和 类
有一个包裹 package
TopClass
在 project/src/TopClass.java
和
PackageClass
在 project/src/package/PackageClass.java
.
现在我们想在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);
}
}
假设我们有一个位于文件夹 project
的项目,源代码位于 project/src
。
我们在 project/src/package
和 类
package
TopClass
在project/src/TopClass.java
和PackageClass
在project/src/package/PackageClass.java
.
现在我们想在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);
}
}