我正在使用 Arraylist
保存异构数据...混合String
, int
和 class
对象(这些对象可以是我定义的任何类的实例。)。我已经初始化了 ArrayList
作为ArrayList<Object> = new ArrayList<Object>
.
但我想我听说过有人说直接引用对象是……。不好/不受欢迎?我指的是这些对象,因为我找不到任何适合我的情况的泛型。可以使用还是有合适的泛型? (我对 Java 比较陌生)
最佳答案
为每种类型使用不同的列表并将这些列表保存在映射中,您可以使用类对象作为键,这样它就不会混淆并且易于访问。
Map<Class<?>,List<?>> map = new HashMap<Class<?>,List<?>>();
map.put(String.class, new ArrayList<String>());
map.put(Integer.class, new ArrayList<Integer>());
map.put(Class.class, new ArrayList<Class<?>>());
编辑:
P.S:如果您想将新对象添加到列表中,当您从 map 中检索列表时,您仍然会收到未检查的警告。
public static void main(String[] args) {
Map<Class<?>,List<?>> map = new HashMap<Class<?>,List<?>>();
map.put(String.class, new ArrayList<String>());
map.put(Integer.class, new ArrayList<Integer>());
map.put(Class.class, new ArrayList<Class<?>>());
String str = "deneme";
@SuppressWarnings("unchecked")
List<String> strList = (List<String>) map.get(String.class);
strList.add(str);
strList.add("str2");
strList.add("str2");
@SuppressWarnings("unchecked")
List<Class<?>> classList = (List<Class<?>>) map.get(Class.class);
classList.add(String.class);
classList.add(Integer.class);
classList.add(Double.class);
for(String currentStr:strList){
System.out.println(currentStr);
}
}
关于java - 适合在数组列表中使用的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5116269/