这句都没有实例肯定调用list.add会报错,而且是空指针,还有,你声的变量为什么要是个公有的public为什么要是statis那?正常的变量声明,一般在类中都是private List list
没看过像你这种的.你想非这样用,要么是在声明的时候就实例 ,就像你这种 public static List jklist = new ArrayList() 要么是调用的时候实例
list=new ArrayList<String>()
list.add(e)
但是这么做也没啥意义.如何声明成静态的那么他的使用就属于这个类的,而不是类的任何一个对象的,所认非要这么用的的话最好在声明时就实例,不然一调用就是空指针.
你是不是忘了把你要调用静态对象的那个方法也声明为静态的?或者是你再用一个实例(instance)去尝试调用静态对象?
例如:
public static class Test {
public static IList<int>iList = new List<int>(100)
public static void MethodA() {
// coding...
iList.Add(0) // 这样是可以的。静态方法中访问静态成员
}
public void MethodB() {
// coding...
MethodA()// 这样是【错误】的。在非静态方法里尝试访问静态成员
iList.Add(1)// 这样是【错误】的。道理一样
}
}
public class TryGo {
public void Go() {
Test.MethodA()// 这样可以访问,通过类名直接访问静态方法
Test.iList.Add(2) // 这样可以访问,通过类名访问静态属性
Test t = new Test()
t.MethodB() // 这样可以访问,通过实例访问非静态成员
t.MethodA() // 这样是【错误】的,实例不能访问静态成员
t.iList.Add(3)// 这样是【错误】的,实例不能访问静态成员
}
}
最简单的方法建一个类,里边定义一个静态的list成员变量,每次去list时检查,如果list为null就数据库查询,如果list已经存在,就直接返回存在的list就行了,高级点的,加个时间比较,超过一定的时间间隔获取list就去数据库查询后获得,如果没有超时的就直接返回保存的list。如果有需要可以自己写一个缓存管理器,用来把需要的
数据缓存
在内存中,并且在根据自定义的时间间隔或事件触发自动更新缓存。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)