gpt4 book ai didi

Java 使用 ArrayList 进行未经检查的方法调用

转载 作者:行者123 更新时间:2023-12-01 21:16:03 25 4
gpt4 key购买 nike

当我运行代码时,我收到此警告:

warning: [unchecked] unchecked method invocation: method addAll in interface List is applied to given types
snakeDotlist.addAll(genFirstDots());
required: Collection<? extends E>
found: List
where E is a type-variable:
E extends Object declared in interface List

代码:

initDisplay();

List<Sprite> snakeDotlist = new ArrayList<>();
snakeDotlist.addAll(genFirstDots());



Sprite tokenSprite = new Sprite((genRandomNumber(0, 64)), (genRandomNumber(0, 48)), 16, 16, "res/snakedot.png");

while(!Display.isCloseRequested())
{

if (hasCollided(tokenSprite, snakeDotlist.get(0)))
{
tokenSprite.updateToken(true);
snakeDotlist.get(0).score += 1;
snakeDotlist.addAll(genNewDots((int)snakeDotlist.get(0).prev1x, (int)snakeDotlist.get(0).prev1y, (int)snakeDotlist.get(0).prev2x, (int)snakeDotlist.get(0).prev1y));
}

.

 public static List genFirstDots()
{
List<Sprite> list = new ArrayList<>();
list.add(new Sprite(3, 0, 16, 16, "res/snakedot.png"));
list.add(new Sprite(2, 0, 16, 16, "res/snakedot.png"));
list.add(new Sprite(1, 0, 16, 16, "res/snakedot.png"));
list.add(new Sprite(0, 0, 16, 16, "res/snakedot.png"));
return list;
}

我看了其他一些帖子,说要更改 SnakeDotList 的声明

List<Sprite> snakeDotlist = new ArrayList<Sprite>();

List<Sprite> snakeDotlist = new ArrayList<>();

但我仍然收到警告消息,但我不知道如何解决它,有什么帮助吗?

最佳答案

您应该更改此设置:

public static List genFirstDots()

对此:

public static List<Sprite> genFirstDots()

出现警告的原因是因为您返回的是 ListgenFirstDots()但您要将返回值添加到 List<Sprite> .

当没有给出泛型类型参数时,泛型类型隐式具有 Object输入参数,所以 List实际上是List<Object> 。当您尝试将对象列表附加到 Sprite 列表时,对象列表存储的对象可能与Sprite不兼容。并且无法添加到 Sprite 列表中。因此发出警告。

关于Java 使用 ArrayList 进行未经检查的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40063970/

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