インスタンス変数/フィールドとして配列を持つクラスがあり、これは別のクラスからこのクラスの最初のメソッドに渡されます。別のメソッドに渡さずに別のメソッドからもアクセスできるはずだという印象を受けましたが、試してみるとNPEが発生しました。
コードは次のとおりです。
public class PLoop {
// instance variable
public Memory[] memList;
// method 1
public void memPass(Memory[] memLocList) {
memList = memLocList;
System.out.println(memList.length);
}
// method 2
public void accessArray() {
System.out.println(memList.length);
}
}
最初のメソッドが呼び出されると、配列の長さを表す整数がコンソールに出力されますが、2 番目のメソッドが呼び出されると、それは NPE であり、同じ配列ではないことが示唆されます。
2 番目のメソッドは、GUI 上のボタンをクリックすることによって呼び出されます。このボタンに関連付けられたメソッドには、次の行に沿った呼び出しのみがあります。
PLoop.accessArray();
私が間違っていることは誰にもわかりますか?
-編集- これらのメソッドへの呼び出しは、それぞれが PLoop のインスタンスを宣言する 2 つの異なるクラスから来ます。
proc = new PLoop();