我创建了一个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;
}
}
答案 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>();