2012-04-04 9 views
1

内のオブジェクトにアクセスする方法を、私は私のgetExpoメソッド内のキーを使用して値を取得するためにハッシュマップオブジェクトにアクセスする必要があります。は、私は、静的ブロック内のハッシュマップをintializedている静的ブロック

は、私のクラスは、あなたがhmap変数クラスの静的メンバにする必要があり、ここで

public class ExampleFactory { 
    static 
    { 
    HashMap<String,Class<?>> hmap = new HashMap<String,Class<?>>(); 

    hmap.put("app", application.class); 
    hmap.put("expo", expession.class); 
    } 

    public void getExpo(String key,String expression) 
    { 
    // I need to access the object in static block 

    Class aclass=hmap.get(key); // it works when i place it inside main method but 
           // not working when i place the create object for 
           // Hashmap in static block 

    return null; 
    } 
} 

答えて

1

は、静的ブロックでそれを埋める、クラスの静的メンバーとして変数を宣言します。この後

public class ExampleFactory 
{ 
    // declare hmap 
    static HashMap<String,Class<?>> hmap = new HashMap<String,Class<?>>(); 
    static 
    { 
    // populate hmap 
    hmap.put("app", application.class); 
    hmap.put("expo", expession.class); 

    } 
    //... 
} 

を、あなたのクラスの内部からアクセスすることができます。静的ブロック内の変数をDelcaring

は、そのブロック外部から、それがアクセス不能となります。それをクラスのメンバーとして宣言すると、そのクラスにアクセスできるようになります。

+0

ありがとう、私は仕事を得ました – Jessie

1

なります。

これはそのままで、静的ブロックで宣言しているので、静的ブロックが実行されると失われます。複数のインスタンスが同時にマップを変更する可能性があるので、あなたはhmapに必ずアクセスする必要が

注、同期またはそうでなければ、スレッドセーフです。理にかなっている場合は、hmapを最終的に作成することもできます。

関連する問題