在创建内部类的实例之前,您必须首先创建 mProgram 的实例,或者您可以将内部类(在这种情况下为 NrlData)声明为静态,但您仍然需要 mProgram 类来访问它(但您不需要必须实例化它。
public class mProgram {
public class NrlData {
...
}
public static void main(String[] args) {
mProgram.NrlData nrlData = new mProgram().new NrlData();
}
public void aMethod() { // accessing inner class from the "this" instance
NrlData nrlData = new NrlData();
}
或者
public class mProgram {
public static class NrlData {
...
}
public static void main(String[] args) {
mProgram.NrlData nrlData = new mProgram.NrlData();
}
}
仅以第一种情况为例,其中 NrlData 不是静态的。
在 mProgram 类的非静态函数中,您不需要创建 mProgram 实例,因为它使用this
实例。
现在,如果您尝试从另一个类访问内部类,因为您没有任何 mProgram 实例,您必须首先创建该实例。这就是为什么您只在 NrlMain 而在 mProgram 中没有问题的原因。
public class NrlMain {
public void accessingInnerClass() {
// Creating the mProgram instance
mProgram mprogram = new mProgram();
// Creating inner class instance
mProgram.NrlData nrlData = mprogram.new NrlData();
}
}