Object java中的各种对象

时间:2014-10-29 21:50:43

标签: java arrays object

我想创建具有包含各种对象的Object数组的类World。

public class World {
    Object obj[] = new Object[10];

    public void World() {
        this.obj[0] = new Sphere();
        this.obj[1] = new Triangle();   

        ... and so on
    }
}

然后在主要:

World world = new World();

我想使用属于特定物体的methot。

e.g。

world.obj[i].methodOfSphere();

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

正如Makoto已经评论过,您可以使用instanceof验证,然后执行cast ...

if(world.obj[i] instanceof Sphere)
    ((Sphere)world.obj[i]).methodOfSphere();

然而,这并不酷。

您应该考虑阅读interface为您的形状创建behaviour,并覆盖实施中的方法......

public interface Shape
{
    methodSpecificToAllShape();
    method2SpecificToAllShape();
}


public class Sphere implements Shape
{
    @Override
    methodSpecificToAllShape()
    {
       //...
    }

    @Override
    method2SpecificToAllShape()
    {
        //...
    }

    /*
     * It does not stop you from adding method for a specific shape
     */
    public void method3SpecificToSphere()
    {
        //...
    }
}

执行此操作,您将对象声明为Shape,然后将调用不同的方法以实现正确的实现,而无需进行强制转换。

Shape triangle = new Triangle();
Shape sphere = new Sphere();

triangle.methodSpecifictoAllShape();
sphere.methodSpecificToAllShape();

根据实例,将执行特定于每个形状的方法。