- ベストアンサー
staticなフィールドをstaticじゃないメソッドで使うには?
いつもお世話になっています。よろしくお願いします。 javaで、staticなメインメソッドからも、staticじゃないメソッドからも1つの メンバ変数(フィールド)を処理したいと思います。 private static String nr; というフィールドを宣言しました。 (staticであるmainメソッドの中で使えるようにstaticで宣言しようと思いました。) 次に、 private void Kensaku() { このstaticではないメソッドの中でString nrを使って処理を行いたいです。 } 初歩の初歩なことを質問してすみませんが、調べても分かりませんでした。 どうか、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
staticなフィールドをstaticでないメソッドから見ることは普通に可能です。 ただしstaticなフィールドは仮想マシンに1つしか存在しないので、 1つ変更すると同じクラスすべてに影響します。 ---例--- class Hoge { private static String nr; public static void main(String[] args) { Hoge hg1 = new Hoge(); Hoge hg2 = new Hoge(); hg1.nr = "fuga"; hg2.method(); } private void method() { System.out.println(nr); } } ---結果--- > java Hoge fuga ------ hg1.rに"fuga"を代入すると、hg2.nrも"fuga"になります。
その他の回答 (1)
- usb_memory
- ベストアンサー率76% (23/30)
private void Kensaku() { nr = "aiueo"; } で、いけるのではないでしょうか? もし、mainとkensakuのメソッドが違うクラスに定義してあるのであれば、 staticフィールドをpublicに変えて「クラス名.フィールド名」で試してみて下さい。
お礼
お忙しい中、回答くださってありがとうございました! 質問の時点で、自分の思い込みが入っていたので、 問題を解決できませんでした。 それで、新しい質問を書こうと思います。 そちらの方にも回答をくださると幸いです。 ありがとうございました!
お礼
お忙しい中、回答くださってありがとうございました! とても分かりやすい回答をくださったにもかかわらず、 質問する時点で頭が悪いので、問題が解決できませんでした。 それで、質問を変えようと思います。 よろしければ、そちらの質問にも回答をくださると幸いです。 ありがとうございました!