2017-12-26 6 views
1

私は、私の "ルート"変数には "localSymbolTable"というネストされた変数があり、 "データ"という名前の別のネストされた変数があることを示しています。eclipseのような私用変数を読む方法はありますか?

enter image description here これらの変数はプライベートなので、直接アクセスすることはできません。それらにアクセスするメソッドは、他の理由でNullPointerExceptionをスローします。私は本当に "データ"変数の値を読む必要があります。これは、Eclipseがデバッグモードで行っているのとまったく同じです。このコーディングを行う方法はありますか?もしそうなら、どうしたらいいですか?

本当に助けていただきありがとうございます。

+2

プライベートの場合は、直接アクセスしないでください。フィールドを取得するためにリフレクションを使用することはできますが、それはプライベートフィールドの目的を破り、さまざまな理由で危険な可能性があります。 – Carcigenicate

+1

リフレクションを使用しますが、リフレクションはコードのパフォーマンスを低下させることに注意してください。 –

+0

アクセサーを使用しないように余分な作業をするのではなく、アクセサーの**明らかなバグ**を修正するのに意味がありませんか? –

答えて

0

Javaのリフレクションでこれを実行できます。フィールドには、理由のために、民間もちろん

Field dataField = root.getLocalSymbolTable().getClass().getDeclaredField("data"); 
dataField.setAccessible(true); 
Object dataFieldValue = dataField.get(root.getLocalSymbolTable()); 

されているように他のコメントとを参照してください。あなたのケースではhere

の例を確認 コードは次のようになります。

+0

privateField.get?またはdataField.get? –

+0

dataField.get、申し訳ありません、編集済みの回答 –

関連する問題