-2

我从配置加载器类访问静态字段“缓存”的方式有问题吗?仅供参考,CacheEngine是一个为 memcached 实现缓存客户端的接口。

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 回答