- ベストアンサー
Javaでprivate変数を他クラスから書き換る
Javaでprivate変数を他クラスから書き換えたいです 調べてみたら http://d.hatena.ne.jp/devworks/20090129/1233211971 がヒットしたのですが どうもうまくいきません エラーなどはなくどうすればいいかわかりません 誰かサンプルソースなど書いてくださらないでしょうか? 回答よろしくお願いします
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
自分の環境で確認したらちゃんとprivate変数更新できましたよ^^ 以下ソース 【private変数を持ったクラス Test2.java】 public class Test2 { private String val = "初期値"; public String getVal(){ return val; } } 【private変数に変更を加えたいクラス Test1.java】 public class Test1 { Test2 obj = new Test2(); // 初期値確認 System.out.println(obj.getVal()); Field f = null; f = obj.getClass().getDeclaredField("val"); f.setAccessible(true); f.set(obj, "更新値"); // 変更後確認 System.out.println(obj.getVal()); } 【実行結果】 >初期値 >更新値
その他の回答 (3)
- wormhole
- ベストアンサー率28% (1626/5665)
>誰かサンプルソースなど書いてくださらないでしょうか? サンプルソース書いても、そのリンク先のと変わらないものができあがるだけですけど・・・
- jjon-com
- ベストアンサー率61% (1599/2592)
キーワード「java getter setter」でGoogle画像検索しても分かりやすい図解がすぐヒットしなかったので, キーワード「java アクセサメソッド」でGoogle画像検索して上位にヒットしたイラストが掲載されていたページがこちら。 http://www.atmarkit.co.jp/ait/articles/0404/17/news012_2.html JavaBeansという固有名詞が登場していますが,ごく一般的なJavaプログラミングにおいても,リンク先で解説されているコーディング書式を用いています。
- hitomura
- ベストアンサー率48% (325/664)
これでいいじゃん。 public class A { private int value; public void setValue(int aValue) { value = aValue; } } というか、そこに書いてあることは普通にプログラムする上では全く不要なテクニックです。 使う必要があるのはごく一部のフレームワークのコーディング時ぐらいでしょう。
補足
実はマインクラフトというゲームのMODを作っていて できるだけ既存クラスを書き換えたくないんですよ・・・ なのでprivate変数を他のクラスから書き換えたいんですが・・・ putのnameには変数の名前をいれてobjにはインスタンスを渡せばいいんですよね?
お礼
結局できませんでしたが 皆さん回答ありがとうございました