ゆるやかでぃべーと タイムマシンを破壊すべきか。

Javaでprivate変数を他クラスから書き換えたいです
調べてみたら
http://d.hatena.ne.jp/devworks/20090129/1233211971
がヒットしたのですが
どうもうまくいきません
エラーなどはなくどうすればいいかわかりません
誰かサンプルソースなど書いてくださらないでしょうか?
回答よろしくお願いします

A 回答 (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());
}

【実行結果】
>初期値
>更新値
    • good
    • 1
この回答へのお礼

結局できませんでしたが
皆さん回答ありがとうございました

お礼日時:2013/11/10 22:12

>誰かサンプルソースなど書いてくださらないでしょうか?



サンプルソース書いても、そのリンク先のと変わらないものができあがるだけですけど・・・
    • good
    • 0

キーワード「java getter setter」でGoogle画像検索しても分かりやすい図解がすぐヒットしなかったので,



キーワード「java アクセサメソッド」でGoogle画像検索して上位にヒットしたイラストが掲載されていたページがこちら。
http://www.atmarkit.co.jp/ait/articles/0404/17/n …

JavaBeansという固有名詞が登場していますが,ごく一般的なJavaプログラミングにおいても,リンク先で解説されているコーディング書式を用いています。
    • good
    • 0

これでいいじゃん。



public class A {
private int value;
public void setValue(int aValue) { value = aValue; }
}

というか、そこに書いてあることは普通にプログラムする上では全く不要なテクニックです。
使う必要があるのはごく一部のフレームワークのコーディング時ぐらいでしょう。

この回答への補足

実はマインクラフトというゲームのMODを作っていて
できるだけ既存クラスを書き換えたくないんですよ・・・
なのでprivate変数を他のクラスから書き換えたいんですが・・・
putのnameには変数の名前をいれてobjにはインスタンスを渡せばいいんですよね?

補足日時:2013/11/07 08:10
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報