• ベストアンサー

staticなフィールドをstaticじゃないメソッドで使うには?

いつもお世話になっています。よろしくお願いします。 javaで、staticなメインメソッドからも、staticじゃないメソッドからも1つの メンバ変数(フィールド)を処理したいと思います。 private static String nr; というフィールドを宣言しました。 (staticであるmainメソッドの中で使えるようにstaticで宣言しようと思いました。) 次に、 private void Kensaku() { このstaticではないメソッドの中でString nrを使って処理を行いたいです。 } 初歩の初歩なことを質問してすみませんが、調べても分かりませんでした。 どうか、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osumitan
  • ベストアンサー率33% (102/307)
回答No.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"になります。

noname#106387
質問者

お礼

お忙しい中、回答くださってありがとうございました! とても分かりやすい回答をくださったにもかかわらず、 質問する時点で頭が悪いので、問題が解決できませんでした。 それで、質問を変えようと思います。 よろしければ、そちらの質問にも回答をくださると幸いです。 ありがとうございました!

その他の回答 (1)

回答No.1

private void Kensaku() {  nr = "aiueo"; } で、いけるのではないでしょうか? もし、mainとkensakuのメソッドが違うクラスに定義してあるのであれば、 staticフィールドをpublicに変えて「クラス名.フィールド名」で試してみて下さい。

noname#106387
質問者

お礼

お忙しい中、回答くださってありがとうございました! 質問の時点で、自分の思い込みが入っていたので、 問題を解決できませんでした。 それで、新しい質問を書こうと思います。 そちらの方にも回答をくださると幸いです。 ありがとうございました!

関連するQ&A