获取内部类实例状态

问题描述 投票:0回答:1

用例类似于下面的代码。在另一个类(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类的方法测试中的字段演示不是本地/具有类级别访问,则可能使用了反射。任何人都可以帮助我理解,有没有办法找到内部阶级状态。任何主题链接都是有帮助的。谢谢。

java reflection inner-classes
1个回答
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
}
© www.soinside.com 2019 - 2024. All rights reserved.