访问静态成员字段会导致Null指针异常

时间:2013-01-16 07:26:50

标签: java oop

我从配置加载程序类访问静态字段'cache'的方式有问题吗?仅供参考,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;
    ...
}

3 个答案:

答案 0 :(得分:5)

这是糟糕的设计,但你访问它的方式是正确的。您的问题是,cache未初始化。你需要在某个地方这样做:

public static CacheEngine cache = new CacheEngine(...);

答案 1 :(得分:2)

我想你可能没有初步化static CacherEngine cache;
要初始化,请在static

中的ConfigLoader class构造函数中添加以下代码
static{
cache=new CacheEngine(...);}

这是另一种方法,但不建议这样做。在声明中添加: public static CacheEngine cache=new CacheEngine

答案 2 :(得分:1)

在访问缓存之前执行

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

在访问它之前初始化它。另外,在一个好的OOP设计中,你可以创建一个静态init方法。