java 静态变量list的问题

java 静态变量list的问题,第1张

public static List list

 这句都没有实例肯定调用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。

如果有需要可以自己写一个缓存管理器,用来把需要的

数据缓存

在内存中,并且在根据自定义的时间间隔或事件触发自动更新缓存。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11307445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存