Arraylist - 编译器让我很困惑

时间:2013-12-13 01:47:22

标签: java generics collections

出于某种原因,当我编译这个简单的代码时,会弹出一个错误。 (如果我有10个代表我会发布它)它基本上说(文件目录)使用未经检查或不安全的操作。使用-Xlint重新编译:取消选中以获取详细信息。我试验了一下,看来如果我带走Bin.add()错误消失了。有人可以解释我应该做什么吗?

ERROR!!!

import java.util.ArrayList;
public class Summoned_Bin
{

ArrayList Bin = new ArrayList();

Summoned_Bin()
{

}

void addToBin()
{
    Summon summoned = new Summon();
    int index = 0;
    while (Bin.get(index) != null)
    {
        index++;
    }
    Bin.add(index , summoned ); //Without this it runs fine
}

}

2 个答案:

答案 0 :(得分:6)

我认为它要您输入列表List<Summon> Bin = new ArrayList<Summon>();

需要注意三点:

将类型声明为List<Summon>而不是ArrayList<Summon>,这是使用界面的最佳做法,这样您就可以在以后更改类型。

Summoned_Bin类应遵循Java命名标准,因此SummonedBin应该是名称。

SummonedBin对象的名称也应遵循Java命名标准,使用bin而不是Bin

修订班级

public class SummonedBin {

    List<Summon> bin = new ArrayList<Summon>();

    SummonedBin() {

    }

    void addToBin() {
        Summon summoned = new Summon();
        int index = 0;
        while (bin.get(index) != null) {
            index++;
        }
        bin.add(index, summoned); 
    }
}

答案 1 :(得分:2)

这不是错误,只是警告。

您想要进行显式类型定义:

ArrayList<Summon> Bin = new ArrayList<Summon>();