gpt4 book ai didi

java - Generics-Type 参数如何工作?

转载 作者:行者123 更新时间:2023-11-29 07:01:51 24 4
gpt4 key购买 nike

我是 java 泛型的新手。 我尝试了以下方法:

Entity class:
public class Box<T> {
private List<T> boxList;

public List<T> getBoxList() {
if (this.boxList == null)
this.boxList = new ArrayList<T>();

return this.boxList;
}

public void setBoxList(List<T> boxList) {
this.boxList = boxList;
}

}

Test class:

public class Client {
public static void main(String[] args) {
Box box = new Box();
box.getBoxList().add(1);
box.getBoxList().add("one");
System.out.println(box.getBoxList());

Box boxInt=new Box<Integer>();
boxInt.getBoxList().add("apple");
System.out.println(boxInt.getBoxList());

}
}

虽然我的 boxInt 是 Integer 类型,但列表 BoxList 仍然接受 "apple"。 我预计它会在编译时引发错误。 非常感谢任何有关这项工作的帮助。

谢谢, 迪维亚

最佳答案

当你声明

Box boxInt = *whatever*

Box被视为 Box<Object> .因此,boxInt.add("apple")被接受。

你应该声明Box像这样:

Box<Integer> boxInt=new Box<Integer>(); //Or = new Box<>(); since Java 7

您可能有兴趣阅读 the oracle documentation about raw types .

When using raw types, you essentially get pre-generics behavior — a Box gives you Objects

关于java - Generics-Type 参数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24759920/

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