Java can';t从方法返回arrayList

Java can';t从方法返回arrayList,java,Java,所以我在自学Java,虽然还不太擅长,但我正在尝试制作一个游戏。我试图从类方法返回arraylist,但它一直给我一个“int不能被取消引用”错误。这是一个名为Levels的类中的方法。它应该创建一个外星人列表并将其返回到主游戏。我有很多类,它们扩展了sprite来表示不同的敌人。所以外星人扩展了精灵 public ArrayList<Sprite> sendWave(){ aliens = new ArrayList<Sprite>(); aliens.

所以我在自学Java,虽然还不太擅长,但我正在尝试制作一个游戏。我试图从类方法返回arraylist,但它一直给我一个“int不能被取消引用”错误。这是一个名为Levels的类中的方法。它应该创建一个外星人列表并将其返回到主游戏。我有很多类,它们扩展了sprite来表示不同的敌人。所以外星人扩展了精灵

public ArrayList<Sprite> sendWave(){
    aliens = new ArrayList<Sprite>();
    aliens.add(new Alien1(100, 50, difficulty));
    // etc
    return aliens;
}
甚至只是通过以下方式单独测试该方法:

level.sendWave();

它总是给我“int不能被解引用”的错误。我真的不明白那是什么意思。什么整数?我返回的arraylist有误吗

看起来您有一个
int级别

一般情况是:

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);
公共列表sendWave(){
列表=新的ArrayList();
添加(新的Alien1(100,50,难度));
//等
遣返外国人;
}
List=sendWave();
外星人。addAll(sendWave);

public void sendWave(列出外国人){
添加(新的Alien1(100,50,难度));
//等
}
列表=新的ArrayList();
sendWave(外国人);
sendWave(外国人);
您确实在方法之外定义了
外星人
,因此使用了一些字段。上面有一个本地独立变量
外星人
不干扰任何命名字段

也许他是外星人

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

上面我还使用了一个更通用的
列表
——实际上是一个接口列表。我使用一个实现类,
ArrayList
创建了一个实例

Java有许多接口,如
List
Map
Set
,并允许专门的实现类,如
LinkedList
HashMap
TreeSet

使用上述额外的注意事项,您可以在将来更改实现,而无需更改许多代码。它实际上是一种语言特性,能够为某些用例提供一些脚本语言所没有的最佳实现


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

错误发生在哪里?显示与
ArrayList
无关的所有代码。你的代码中还有一个问题。StackTrace请…?在下面的某个地方,你调用的是原语(int)上的任何方法,你应该调用Integer,我猜Alien1构造函数可能有问题?是的,我以前做过,我想知道某种类型的东西是否是个问题,所以把它全部改成了ArrayList。当我尝试使用sendWave()时,错误总是发生。您的
Alien1
类是什么样子的?你能把它添加到你的帖子里吗?重命名这个方法,也许会有另一个sendWave。干净利落。检查使用了哪些类DDOH!我想我可能已经解决了这个问题。我有一个被指定为int的级别。这就是给我这个问题的原因。现在正在编译。仍然给我一个错误,但另一个错误是进度,对吗?我相信,开发人员越来越多地获得更高级别的错误。
level.sendWave();
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);