在一个对象数组中,可以在索引处创建一个对象的新实例吗?

时间:2010-03-23 18:41:11

标签: java syntax arrays

以下是示例代码:

class TestAO 
{ 
    int[] x; 

    public TestAO () 
    {
        this.x = new int[5] ;
        for (int i = 0; i<x.length; i++)
        x[i] = i; 
    } 

    public static void main (String[]arg) 
    { 
        TestAO a = new TestAO ();
        System.out.println (a) ;        
        TestAO c = new TestAO () ; 
        c.x[3] = 35 ; 
        TestAO[] Z = new TestAO[3] ; 
        Z[0] = a ;
        Z[1] = (TestAO b = new TestAO()) ; 
        Z[2] = c ; 
    } 
}

当我尝试编译时,我在第Z[1]行收到一条错误消息,内容如下:

TestAO.java:22: ')' expected
        Z[1] = (TestAO b = new TestAO()) ; 
                       ^

我在这里要做的是创建一个对象TestAO的实例,我希望在该索引中的索引中分配该索引,而不是像我一样在数组外创建对象的实例做了a

这是合法的吗?我只是制作一些我看不到的语法错误(从而导致错误信息)或者我正在尝试做的事情是不能完成的?

编辑:

关于马克的答案,这是我的后续问题:

是否有更短的方法为对象数组中的对象的实例变量赋值,而不是:(不写任何特殊的构造函数)

    Z[1] = new TestAO() ; 
    Z[1].x[4] = 80085 ;

4 个答案:

答案 0 :(得分:4)

比你想象的容易:

Z[1] = new TestAO(); 

答案 1 :(得分:1)

像这样声明变量是不可能的。只需写“Z [1] = new TestAO();”如果你想要另一个参考“TestAO b = Z [1]”;

答案 2 :(得分:0)

你在这里真正做的是将作业的结果分配给Z [1]。 Java中赋值的返回类型是boolean,所以你的方式不起作用。

尝试:

Z[1] = new TestAO();

答案 3 :(得分:0)

试试这个:

Z[1] = new TestAO() ;