无法访问存储在ArrayList中的对象

时间:2014-02-10 12:26:11

标签: java list netbeans

我创建了一个arraylist。

List FWD = new ArrayList<Coords>();
FWD.add(new Coords(42.41, 37.23));
FWD.add(new Coords(37.09, 47.8));
FWD.add(new Coords(36.83, 48.42));

然后我想以这种方式访问​​列表的每个元素:

FWD.get(3).[some method from Coords class]

但Netbeans说:

  

找不到符号符号:方法getIndexX()location:class   对象

Coords课程:

public class Coords {
    private double weightY, indexX;

    Coords(double x, double y){
        setIndexX(x);
        setWeightY(y);
    }

    public double getWeightY() {
        return weightY;
    }

    public void setWeightY(double weightY) {
        this.weightY = weightY;
    }

    public double getIndexX() {
        return indexX;
    }

    public void setIndexX(double indexX) {
        this.indexX = indexX;
    }
}

4 个答案:

答案 0 :(得分:2)

更改

List FWD = new ArrayList<Coords>();

要:

List<Coords> FWD = new ArrayList<Coords>();

答案 1 :(得分:2)

您的变量FWD类型为List,但它实际上包含ArrayList<Coords>,它是List<Coords>,但编译器不知道这一点。如果FWD被声明为List<Coords>,则此代码应按原样运行。

您还应注意Java列表是0索引的,因此列表的第三个元素的索引为2,因此在您提供的示例中,将不会检索到元素,尽管这只会在运行时出现

最后一点,可能有趣的是,Java约定规定了要在camelCase中命名的变量,因此您可能更喜欢将变量命名为fwd或类似(如果不是也可以使用完整的单词)过度)。

答案 2 :(得分:1)

尝试使用:

List<Coords> FWD = new ArrayList<Coords>();

这样编译器就知道FWD拥有Coords的列表。

答案 3 :(得分:0)

其实你正在使用

List FWD = new ArrayList<Coords>();

这意味着JVM将按如下方式创建List

List<Object> FWD = new ArrayList<Coords>();

当您使用get()时,它将返回Object类的对象,当您调用方法getIndexX()时,此方法在Object类中不存在,因此它将在编译时给出异常或错误。

因此,您应该使用

List<Coords> FWD = new ArrayList<Coords>();