我想从内部类方法arr
中访问MyMethod
变量。当我尝试从那里打印时,我最终得到一个空指针异常。
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;
}
}
答案 0 :(得分:3)
您只能使用arr
。但是,在您将其设置为某个内容之前,它将为null
BTW:你的my = new MyClass()
会爆炸,因为它会在堆栈溢出之前创建对象。
答案 1 :(得分:1)
您尚未初始化它,因此引用为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);
}
}
答案 2 :(得分:0)
好吧,对于主方法的初学者,你永远不会创建你的类的实例。
此外,MyClass
引用了MyClass
个对象。在MyClass
的构造函数中,它通过调用它自己的构造函数来初始化该引用。这是一个无休止的循环。
答案 3 :(得分:0)
执行以下操作。你的初始化方式是错误的。
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];