gpt4 book ai didi

java - 为什么可以使用反射将 Double 添加到整数列表中

转载 作者:IT老高 更新时间:2023-10-28 13:53:53 25 4
gpt4 key购买 nike

为什么这段代码运行时没有任何异常?

public static void main(String args[]) {
List<Integer> a = new ArrayList<Integer>();
try {

a.getClass()
.getMethod("add", Object.class)
.invoke(a, new Double(0.55555));

} catch (Exception e) {
e.printStackTrace();
}
System.out.println(a.get(0));
}

最佳答案

泛型是编译时的东西。在运行时,一个常规的 ArrayList ,没有任何额外的检查,使用。由于您通过使用反射将元素添加到列表中来绕过安全检查,因此没有什么可以阻止 Double从存储在您的List<Integer> 中.就像你做的那样

List<Integer> list = new ArrayList<Integer>();
List rawList = list;
rawList.add(new Double(2.5));

如果您希望列表在运行时实现类型检查,请使用

List<Integer> checkedList = Collections.checkedList(list, Integer.class);

关于java - 为什么可以使用反射将 Double 添加到整数列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com