不同类型的对象数组

Tom*_*iba 1 java arrays types class object

我正在将游戏编程为Java applet,而且我有两个不同的类具有相似的变量 - PavementWay.

我想创建一个包含两个类对象的Array.我必须更改示例xy所有这些对象,所以我想创建一个Array.这可能吗?

我试过,ArrayList<Object> obj = new ArrayList<Object>();但如果我obj.add(0, theWay);找不到一种方法来读取变量.

我也试过System.out.print(obj.get(0));rpg.way@2c61bbb7.

JB *_*zet 6

简而言之,您希望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)