• ベストアンサー

例えば、以下のようなクラスでmap変数に、あらかじめ値を入れておいて、

例えば、以下のようなクラスでmap変数に、あらかじめ値を入れておいて、別のクラスで使うときに Common.map.get(""); と書いて、いつでも値を取り出したいのですが、static変数は、コンストラクタでいじれないようで出来ません。 このCommonクラス内であらかじめ値を入れておく方法はあるでしょうか? public class Common{ public static HashMap<String, String> map = new HashMap(); }

  • Java
  • 回答数1
  • ありがとう数3

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

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

スタティックイニシャライザー。 public class Common {  public static HashMap<String, String> map;  static {   map = new HashMap<String, String>();   map.put("ABC", "xyz");  } }

関連するQ&A

  • 違うクラスからの変数の共有化

    一つのクラスの中にある変数の値を、二つの別なクラスから呼び出して、その二つのクラスのどちらから変数を参照しても同じ値が帰ってくるようにしたいのですが、いろいろ調べてもできなかったので質問させていただきますm(_ _)m // 共有化させたい変数を持つクラス // Var.java public class Var{  public static int i;  public Var(int i){ this.i = i; }  public Var(){}  public static void getI(){   return i;  } } //クラス1 //Class1.java public class Class1{  Var var = new Var(1); } //クラス2 //Class2.java public class Class2{  Var var = new Var();  System.out.println(var.getI()); } とした場合、Class1を実行し、次にClass2を実行すると、クラス1で定義した変数の値である 1 が戻ってくるようにしたいのですが、上記の方法では、Class2を実行すると結果は 0 になってしまいました。 まだまだ習い始めたばかりでいまいちstaticを使い切れていないと思います・・・ たとえば、PrintStreamクラスの public static final PrintStream out というのはどこから参照しても同じ結果なのでそのようなやり方で大丈夫だろうと思ったのですが・・・ このような方法では共有化させることはできないのでしょうか?またできないのでしたらほかのやり方がもしあった場合は教えていただきたいと思います。 どうかお願いします。

    • ベストアンサー
    • Java
  • 動的に変数をセット後他クラスから参照する場合

    コンストラクタで変数にセットした後 他のクラスでインスタンスを生成することなく セットした変数を参照したいのですが、 staticにすると、他クラスで変数を変更することも できてしまいます。他の方法がありますでしょうか? 変数はprivateにして、getterで取得するという方法も 考えられますが、static finalな変数として扱う方法が あるか、お分かりの方いらっしゃいましたら教えてください。 Javaを初めて1ヶ月なので、見当違いの質問でしたらご指摘ください。 例) Class A{  static final String aaa; A(String paraStr){ aaa = paraStr; } } Class B{ static void main(String[] args){ new A("test"); } } Class C{ void chStr(){ System.out.println(A.aaa); A.aaa = "changeStr" System.out.println(A.aaa); } } 期待する値 test test もしくは、実行時にfinalの値は変更できない等のException 宜しくお願いします。

    • ベストアンサー
    • Java
  • static変数を持ったクラスを継承した複数のクラスで、独立してその変

    static変数を持ったクラスを継承した複数のクラスで、独立してその変数を使いたい。 例えば、 class AbstractStatic{ public static String str; } class Ex1 extends AbstractStatic{} class Ex2 extends AbstractStatic{} というクラスがあったとして、 Ex1 e1 = new Ex1(); ex1.str = "hoge"; といれると、 ex2.str で、hogeが入ってしまいます。同じようなstatic変数を持つクラスを複数作りたいのですが、継承させると、独立して変数を持たせられません。 同じようなクラスに直接static変数を、記述するしかないのでしょうか?

    • ベストアンサー
    • Java
  • javaの連想配列について教えてください

    お世話になります。 javaの連想配列について教えてください。 やりたいことは下記のようなデータを作成したいです。 ================================================ {   "shcool" : {          "class" : "A",          "yamada" : {                "class" : "AA",                "height" : 165,                "weight" : 60         },          "saitou" : {                "class" : "AB",                "height" : 170,                "weight" : 65         }   } } ================================================ 下記HPを参考してHashMap+HashMapで作成したのですがうまくいきません。 http://www.atmarkit.co.jp/fjava/javatips/081java010.html Map<String, Object> map = new HashMap<String, Object>(); map.put("school", new HashMap<String, Object>()); ((Map) map.get("school")).put("class", "A"); ((Map) map.get("school")).put("yamada", new HashMap<String, Object>()); ((Map) map.get("school")).get("yamada").put("class", "AB"); ・・・ としても下記エラーとなってしまいます。 ----------------------------------------------------- エラー: シンボルを見つけられません ((Map) map.get("school")).get("yamada").put("class", "AB");                            ^ シンボル: メソッド put(String,String) ----------------------------------------------------- 途中のschoolのvalueにHashMapを入れるところまではうまくいっているようですが、 yamadaのvalueにHashMapを入れて.put()の仕方がわかりません。。。 上記データをHashMap+HashMapで作成するにはどうしたらよいでしょうか? ぜひご教示いただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 自作のクラスファイルがインポート出来ない その2

    同じような質問をしてしまいまして 大変にご迷惑をお掛けしますが ご質問させて頂きます。 以前、皆さんのご協力により 大変に勉強になったんですが まだエラーが取れなくて困っています。 jukou.classとTestMap.classは同じフォルダにあります。jukou.javaからTestMap.javaを呼び出そうとすると、jukou.javaの方で以下のようなコンパイルエラーが表示されてしまいます。 -------------------- jukou.java:85: TestMap の main(java.lang.String[]) は (java.lang.String) に適用 できません。 TestMap.main(\"C\") ; ^ エラー 1 個 --- TestMap.main(\"C\") ; は、TestMap(\"C\") ;の方が正しいと思いますが、こちらでもエラーになります。 以下がコードです。 TestMap.java --- import java.util.*; public class TestMap { /*HashMap生成(クラス変数)*/ class MyData{ public String sDate; public String sName; } private static HashMap hashMap = new HashMap(); /*追加:入力キー(クラス変数)*/ public static String inputKey = null; private String[] keys = {}; public static void main(String SYAINNO[]){ try{ TestMap testMap = new TestMap(); testMap.setMap(\"test.csv\"); /*Keyに対応する出力の判断*/ if(testMap.checkKey(SYAINNO[0])){ ・ ・ ・ public String getStr(){ return \"呼ばれてますよ!\" ; } --- jukou.java -- import java.io.* ; ・ ・ ・ /* LOOKUP用処理 */ else if (req.getParameter(\"map\") != null) { TestMap.main(\"C\") ; } pw.close() ; } ご教授して頂けたら幸いです。

    • ベストアンサー
    • Java
  • MAPに関して

    以下のように、マップにCLASS_Aのリストのリストを格納しています。 CLASS_A { private int a getter setter } MAP<String,List<List<CLASS_A>>> map = new HashMap<String,List<List<classA>>> キーを元に、マップからリストのリストを取得した場合に CLASS_Aからint aを取得する場合 for List<List<CLASS_A> a : DaoList(Daoの取得結果)) for List<CLASS_A> b : a) b.get() } } でよろしいでしょうか? (2重ループになってしまうので、もっと簡単な取得方法あったら教えてください)

  • 文字列のメンバ変数を外部変数のように扱いたい

    済みません。質問なのですが、 メンバ変数を外部変数のように扱うにはどうしたらよいのでしょうか? int型などの場合、 class test{ static const int a; }; const int test::a = 10; とすればよいですよね? これをcharの配列にして class test{ static char a[7][32]; }; char test::a[0] = "test"; とすると サイズが0の配列を割り当てまたは宣言しようとしました というコンパイルエラーがでてしまいます…。 多次元配列の場合はstatic変数としてもてないのでしょうか? char** として宣言してもどこでnewを行えばよいか解りません。 コンストラクタの中で行えば そこでstaticではなくなってしまいますし…。 後、できればstringクラスの配列で持ちたいのですが #include <string> class test{ static string test[7]; }; string test::test[0] = "aaa"; なんてことができますでしょうか? 質問内容が解りにくいかも知れませんが どうか教えてください。 宜しくお願いいたします。

  • テンプレートクラスでのクラス変数

    テンプレートから生成したクラスごとにクラス変数を設けて、 かつ、クラス変数の初期化をいちいちやらなくてもよい という状況を作りたいと考えています。 そこでたとえば template <int N> class test { public: static int class_var() { static int class_var_ = N; return class_var_; } }; としたとき test<1>::class_var() と test<2>::class_var() はどのような値になるのでしょうか? VC++ではテンプレート全体で class_var_の値が同じになってしまうようのなのですが。。。 そもそも、こういうクラス変数自体を つくろうという考えが間違っているのでしょうか? どなたかご存知でしたらお教えください。

  • HashMapについて

    質問させてください 以下に簡単なコードをJBuilderで作成しました。 printでブレークをはってmapインスタンスを評価してみると、mapに20個のキーが登録されるはずが、 16個しかいません。 この時点でstr1[16]が評価しても表示されていないのですが、map.get()で正常に取得はできています。 どのようなことが考えられるか、わかる型がいましたら教えてください。よろしくお願いいたします。 import java.util.*; class Test { public static void main(String[]args){ HashMap map = new HashMap(); String str1[] = new String[20]; String str2[] = new String[20]; for(int i = 0; i < 20; i ++){ str1[i] = new String(Integer.toString(i)); str2[i] = new String(Integer.toString(i * 10)); map.put(str1[i],str2[i]); } System.out.println("デバック用ブレーク"); System.out.println(map.get(str1[11])); } }

    • ベストアンサー
    • Java
  • JSPでHashMap・配列の変数の値を扱う方法について

    サーブレット側でHashMap型の「map」に値をセットしてしています。 mapは配列となっています。 ■サーブレット -------------------------------------- HashMap map[] = new HashMap[10];  ・・省略・・ getRequest().setAttribute("map",map) -------------------------------------- 上記でセットした値をJSP側で値を参照したいと思っているのですが、 HashMap・配列の値をJSP側でどのように読み込む/記述したら良いのか 分かりません。 初歩的な質問で申し訳ございませんが、よろしくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう