問題の概要
Javaであるインスタンスを定義してそのインスタンス変数を取得しようとしているのですが、
いつの間にかそのインスタンス変数がnullになってしまっているという現象が起きております。
確認してみると、そのインスタンス変数のhashCodeが変わってしまっておりました。
変わってしまう時にそのインスタンス変数に対して、処理はさせていないため、原因がわからず困っております。
原因がわかる方がおりましたら、ご教授お願いいたします。
該当コード(サンプル)
public class A { List<B> b; Boolean bool; } public class B{ String data1; String data2; } public class Main{ public static void main(String args[]){ // class Aに対してclass Bがリストとして値が格納されているとする System.out.print(a.b.hashCode()); // 100とする System.out.print(a.b); // ArrayListの値が存在する if(a.bool){ // 今回はfalseなため、if文の中の処理は行なっていない -> hashCodeが変わるまでにしたのはif文でtrue,falseの判定をしただけ // 何かしらの処理 } System.out.print(a.b.hashCode()); // 200になっている System.out.print(a.b); // nullになる } }
上記のコード以外にもインスタンス変数が突然消えてしまう事象が起こります。
わかる範囲で共通点を申し上げますと、
class Bに当たるインスタンスには多くのプロパティが存在しており、それぞれに対してデータの追加、加工等の処理をさせている。
ということぐらいです。
なお、今回のif文を消しても次の処理が終わるとListのclass Bはnullになってしまいます。
よろしくお願いいたします。
環境
- Java8
- PlayFramework2.5
- Eclipse4.6.2
回答1件
あなたの回答
tips
プレビュー