Tom*_*iba 1 java arrays types class object
我正在将游戏编程为Java applet,而且我有两个不同的类具有相似的变量 - Pavement和Way.
我想创建一个包含两个类对象的Array.我必须更改示例x和y所有这些对象,所以我想创建一个Array.这可能吗?
我试过,ArrayList<Object> obj = new ArrayList<Object>();但如果我obj.add(0, theWay);找不到一种方法来读取变量.
我也试过System.out.print(obj.get(0));了rpg.way@2c61bbb7.
简而言之,您希望setX()在Way实例或Pavement实例上调用方法(如),而不知道对象是Way还是Pavement.
这正是多态性解决的问题.定义一个接口Locatable,让你的两个类实现这个接口.然后创建一个List<Locatable>,你就可以在其中添加Ways和Pavements:
public interface Locatable {
public void setX(int x);
public void setY(int y);
public int getX();
public int getY();
}
public class Way implements Locatable {
...
}
public class Pavement implements Locatable {
...
}
List<Locatable> locatables = new ArrayList<Locatable>();
list.add(new Way());
list.add(new Pavement());
for (Locatable locatable: locatables) {
locatable.setX(22);
locatable.setY(43);
}
for (Locatable locatable: locatables) {
System.out.println("the locatable is an instance of " + locatable.getClass());
System.out.println("its location is " + locatable.getX() + ", " + locatable.getY());
}
Run Code Online (Sandbox Code Playgroud)