有人能解释一下为什么以下代码段可以编译通过吗?
List<Long> longNums = new ArrayList(Arrays.asList("one", "two", "three"));
这是由于类型擦除导致的吗?
如果我有以下方法:
public <T> T readProperty(String propName, Class<T> type);
如何确保它返回的是List<Long>
而不是List<String>
?显然,在调用方法时我只能提供List.class
并祈祷。
//run and pray
List<Long> longNums = readProperty("prop", List.class);
我曾经遇到过这样的情况,一个方法错误地将字符串对象列表分配给长整型数字的列表,直到我运行它并看到ClassCastException
时才发现。