从内部类访问变量 - 获取空指针异常



我想从内部类方法MyMethod内部访问arr变量。当我尝试从那里打印它时,我最终得到一个空指针异常。

public class MyClass{
    String[] arr;
    MyClass my;
    public MyClass(){
      my = new MyClass();
    }
     public class MyInner {
        public void MyMethod() {
            // I need to access 'my.arr' from here how can i do it. 
         }
       }
     public static void main(String[] args) {
       String[] n={"ddd","f"};
       my.arr=n;
     }
}

你可以只使用 arr . 但是,直到您将其设置为某些内容,否则它将null

顺便说一句:你的my = new MyClass()会爆炸,因为它会创建对象,直到它堆叠溢出。

您尚未初始化它,因此引用null。例如,在构造函数中初始化它,您将可以通过内部类访问该变量。

public class MyClass {
    String[] arr;
    public MyClass (String[] a_arr) {
        arr = a_arr;
    }
    public class MyInner {
        public void MyMethod () {
            // I need to access 'my.arr' from here how can i do it. 
        }
    }
    public static void main (String[] args) {
        String[] n= {"ddd","f"};
        MyClass myClass = new MyClass (n);
    }
}

好吧,对于主方法的初学者,您永远不会创建类的实例。

此外,MyClass还引用了MyClass对象。 在MyClass的构造函数中,它通过调用自己的构造函数来初始化该引用。 这是一个无休止的循环。

执行以下操作。您的初始化方式是错误的。

public class MyClass{
    String[] arr;
    MyClass my;
    public MyClass(){
    }
     public class MyInner {
        public void MyMethod() {
            // I need to access 'my.arr' from here how can i do it. 
         }
       }
     public static void main(String[] args) {
       String[] n={"ddd","f"};
       MyClass my=new MyClass();
String[] b = new String[2];
System.arraycopy( n, 0, b, 0, n.length );
     }
}

如果超过 2 个字符串,只需执行 String[] b = new String[n.length];

最新更新