当我遇到这种情况时,我正在实现一个Java应用程序,并且无法找到哪种方式更好以及为什么这样做。以下是该方案。
我有一个静态列表,可以在应用程序启动时加载数据。
在我的ApplicationStartup类中,我有
public static List<Map<String,Object>> stockSymbolsListMap;
现在,当我使用Utility类中的函数加载此List时,我有以下代码:
//Check if the list has been initialized or not
if(ApplicationStartup.stockSymbolsListMap == null){
ApplicationStartup.stockSymbolsListMap = new ArrayList<Map<String,Object>>();
} else if(!(ApplicationStartup.stockSymbolsListMap.isEmpty())){
// Clear the list to avoid redundancy
ApplicationStartup.stockSymbolsListMap.clear();
}
// Adding all stock symbols to the list
while(allStockSymbols.hasNext()){
ApplicationStartup.stockSymbolsListMap.add(allStockSymbols.next().toMap());
}
我在ApplicationStartup类本身中初始化此列表是不是更好?
public static List<Map<String,Object>> stockSymbolsListMap = new ArrayList<Map<String,Object>>();
答案 0 :(得分:1)
这取决于。你的第一种方法类似于lazy initialization,这可能是有益的。如果您不需要立即stockSymbolsListMap
,那么为什么要初始化它?另一方面,如果初始化非常便宜,那么为简单起见,您可以考虑立即初始化列表。总的来说,在你的程序环境中做任何更有意义的事情,以及将来最容易维护的事情。
答案 1 :(得分:1)
我可以看到列表是静态的,所以它将被类调用并初始化它你将使用静态代码,因此初始化不会重复,所以为什么你需要用这种方式来初始化它对我来说,我更喜欢使用单例bean而不是使用静态元素。