gpt4 book ai didi

java - 原始类型和数据完整性列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:54 26 4
gpt4 key购买 nike

在这个例子中

public static void main(String[] args) {

List<Integer> integers = new ArrayList<Integer>();
integers.add(1);
addToList(integers);
System.out.println(integers);
}


public static void addToList(List list0){
list0.add("blabl");
}

编译并打印结果

[1, blabl]

我的理解是:

引用变量“整数”有一个数组列表对象的地址(比如 111),它被传递给 addToList 方法。因此,在 addToList 方法中,list0 指向具有对象(它是 Integer 类型的数组列表)的同一地址,并将一个字符串添加到该数组列表对象。

如何将字符串添加到整数类型的数组列表中?这不是数据完整性问题吗?

更新

下面的答案和this回答有帮助。谢谢。

最佳答案

这是 Type Erasure 的经典例子.在 Java 中,泛型在编译时被删除,并被强制转换取代。

这意味着你可以这样做,但你会得到一个 ClassCastException当你这样做的时候:

Integer myInt = integers.get(1);

事实上,编译器应该在您这样做时警告您,因为您正在隐式转换 List<Something>List当你调用方法时。编译器知道它无法在编译时验证类型安全。

关于java - 原始类型和数据完整性列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17260787/

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