gpt4 book ai didi

java - 无法从方法返回 arrayList

转载 作者:行者123 更新时间:2023-11-30 05:45:39 25 4
gpt4 key购买 nike

所以我正在自学 Java,虽然还不是很擅长,但正在尝试制作游戏。我试图从类方法返回一个数组列表,但它一直给我一个“int 无法取消引用”错误。这是来自 Levels 类的方法。它应该创建一个外星人列表并将其返回到主游戏。我有很多类扩展 Sprite 来代表不同的敌人。所以alien#扩展了 Sprite 。

public ArrayList<Sprite> sendWave(){
aliens = new ArrayList<Sprite>();
aliens.add(new Alien1(100, 50, difficulty));
// etc
return aliens;
}

稍后在绘制所有内容的板类中,我想读取该 ArrayList。我目前有这个:

public void initAliens() {
Levels level = new Levels();
ArrayList<Sprite> aliens = new ArrayList<>();
aliens.addAll(level.sendWave());
// blah blah
}

我也尝试过:

aliens = level.sendWave();

或者甚至只是通过执行以下操作来单独测试该方法:

level.sendWave();

它总是给我“int 无法取消引用”错误。我真的不明白这意味着什么。什么int?我是否错误地返回了数组列表或者其他什么?

最佳答案

看起来您有一个 int level; .

一般模式是:

public List<Sprite> sendWave() {
List<Sprite> aliens = new ArrayList<>();
aliens.add(new Alien1(100, 50, difficulty));
// etc
return aliens;
}

List<Sprite> aliens = sendWave();
aliens.addAll(sendWave);

public void sendWave(List<Sprite> aliens) {
aliens.add(new Alien1(100, 50, difficulty));
// etc
}

List<Sprite> aliens = new ArrayList<>();
sendWave(aliens);
sendWave(aliens);

您确实使用了 aliens在方法外部定义,因此有一些字段。上面有一个局部自变量aliens不干扰任何命名字段。

也许这是一个int aliens .

更好的是使用局部变量,尽可能接近它们的用法。

上面我还用了一个比较通用的List<Sprite> - 实际上是一个接口(interface)列表。我使用实现类创建一个实例,ArrayList .

Java 有很多接口(interface),例如 List , MapSet并允许专门的实现类,如 LinkedList , HashMapTreeSet .

使用上述额外的注意,将来可以更改实现,而无需更改太多代码。它实际上是一种语言功能,能够为某些用例提供最佳实现,这是某些脚本语言所不具备的。

对于其余部分,我没有在您的代码中发现任何问题,可能是字段干扰。

关于java - 无法从方法返回 arrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888680/

25 4 0