用例类似于下面的代码。在另一个类(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 类的方法 test 中的字段 demo 不是本地/具有类级别的访问权限,则可能使用了Reflection。 谁能帮我理解,有没有办法找到内部阶级的地位。与主题的任何链接都是有帮助的。谢谢。
答案 0 :(得分:0)
您可能想检查该类的对象是否已实例化。
对于此任务,您应该在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
}