我想从内部类方法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];