-2

構成ローダー クラスから静的フィールド 'キャッシュ' にアクセスする方法に何か問題がありますか? 参考までに、CacheEnginememcached のキャッシュ クライアントを実装するインターフェイスです。

public class Test {
     ...
     getCache(){
       ...
       try{
        cacheData =  ConfigLoader.cache.get(key); // Accessing the static 'cache' memeber returns Null Pointer Exception  
        ...
       }
     }
}

//ConfigLoader Class
public class ConfigLoader{
    public static CacheEngine cache;
    ...
}
4

3 に答える 3

5

悪いデザインですが、アクセスする方法は正しいです。あなたの問題は、それcacheが初期化されていないことです。どこかでそうする必要があります:

public static CacheEngine cache = new CacheEngine(...);
于 2013-01-16T07:29:20.487 に答える
2

私はあなたが初期化していないかもしれないと思います。初期化するには:のコンストラクターにstatic CacherEngine cache;
次のコードを追加します。staticConfigLoader class

static{
cache=new CacheEngine(...);}

これは別の方法ですが、お勧めしません。宣言にこれを追加してください。 public static CacheEngine cache=new CacheEngine

于 2013-01-16T07:33:08.047 に答える
1

キャッシュにアクセスする前に行う

if (cache==null) cache = new CacheEngine(...);

アクセスする前に初期化してください。また、優れたOOP設計では、静的なinitメソッドを作成します。

于 2013-01-16T07:31:39.340 に答える