用例类似于下面的代码。在另一个类(Outer_Demo)中有一个类(Inner_Demo)。 Inner_class将在外部类私有方法中的某些条件下实例化。
class Outer_Demo {
public Outer_Demo() {
test();
}
// private method of the outer class
private void test() {
Inner_Demo demo;
if(condition)
demo = new Inner_Demo();
}
// inner class
class Inner_Demo {
}
}
main(){
Outer_Demo outer = new Outer_Demo();
// Here I need to check is Inner class got instantiated
// Trying to print the value as below leads to error create
// field/constant Inner_Demo in Outer_Demo
System.out.println(Outer_Demo.Inner_Demo); // outer.Inner_Demo
/* Storing the created instance to Outer_Demo.Inner_Demo
is allowed */
Outer_Demo.Inner_Demo inst = outer.new Inner_Demo();
System.out.println(inst);
}
我需要测试,内部类是否实例化。我知道以上述方式调用内部类是不正确的。
如果Outer_Demo类的方法测试中的字段演示不是本地/具有类级别访问,则可能使用了反射。任何人都可以帮助我理解,有没有办法找到内部阶级状态。任何主题链接都是有帮助的。谢谢。
您可能想要检查该类的对象是否已实例化。
对于此任务,您应该在Inner_Demo
类中声明一个Outer_Demo
字段:
class Outer_Demo {
public Outer_Demo() {
test();
}
Inner_Demo innerDemo;
...
现在,每次实例化对象时,都必须为该字段分配一个值:
innerDemo = new Inner_Demo();
最后,当你想检查对象是否存在时,你就像这样做:
if (innerDemo == null) {
//object does not exist yet and has to be instantiated
} else {
//object does exist and can be used
}