Java 从原始类型 ArrayList 获取字段
Java get fields from raw type ArrayList
我在 for 中从 ArrayList 中获取 x 时遇到问题。
让我用这段代码更好地解释一下:
private ArrayList pointStorer = new ArrayList();
我先声明ArrayList
public void mouseEntered(MouseEvent e){
for(int i = 0; i < pointStorer.size(); i++){
if(pointStorer.get(i).x <= e.getX()){
check = true;
}
}
}
然后当我尝试传递 ArrayList 并为每个元素获取 x 时,它不起作用,Java 说 'cannot find simbol'(x)。
预先感谢您的帮助。
当您从 pointStorer
中获取一个元素时,您需要将其转换为 Point
(或您正在使用的任何 class),否则程序将不知道其类型和它不会知道它有一个 x
字段。
但是最好显式定义数组类型,像这样:
private List<Point> pointStorer = new ArrayList<Point>();
这样,当您使用 get
时,它会直接 return 一个 Point
对象,您不必转换它来访问它的字段。
Java 认为您的 ArrayList
为 Object
。
您应该提供一个类型参数,例如:ArrayList<Point>
或其他带有字段 x
.
的类型
我在 for 中从 ArrayList 中获取 x 时遇到问题。
让我用这段代码更好地解释一下:
private ArrayList pointStorer = new ArrayList();
我先声明ArrayList
public void mouseEntered(MouseEvent e){
for(int i = 0; i < pointStorer.size(); i++){
if(pointStorer.get(i).x <= e.getX()){
check = true;
}
}
}
然后当我尝试传递 ArrayList 并为每个元素获取 x 时,它不起作用,Java 说 'cannot find simbol'(x)。
预先感谢您的帮助。
当您从 pointStorer
中获取一个元素时,您需要将其转换为 Point
(或您正在使用的任何 class),否则程序将不知道其类型和它不会知道它有一个 x
字段。
但是最好显式定义数组类型,像这样:
private List<Point> pointStorer = new ArrayList<Point>();
这样,当您使用 get
时,它会直接 return 一个 Point
对象,您不必转换它来访问它的字段。
Java 认为您的 ArrayList
为 Object
。
您应该提供一个类型参数,例如:ArrayList<Point>
或其他带有字段 x
.