我遇到一个奇怪的问题,我无法通过索引将值(Object)分配给GameObject数组,但是当我将表达式放在大括号中时,它就可以工作。
GameObject是一个接口,Sphere(Object s)实现它

我基本上已经尝试了所有方法,但是正如我所说,将表达式放在大括号中是可行的,但是我想知道为什么会这样。

Sphere s = new Sphere(new double[] {0,0,50},10,new Color(255,0,0));
GameObject[] objs = new GameObject[5];
objs[0] = s;


不起作用,

但这有效:

 Sphere s = new Sphere(new double[] {0,0,50},10,new Color(255,0,0));
 GameObject[] objs = new GameObject[5];
 {objs[0] = s;}


我从2018年12月开始使用Eclipse IDE

最佳答案

我认为您正在尝试类似的事情。

class YourClass {
    Sphere s = new Sphere(new double[] {0,0,50},10,new Color(255,0,0));
    GameObject[] objs = new GameObject[5];
    objs[0] = s;
}


Java不允许这样做。您只能将方法声明和字段声明直接放在类中。您可以在其中放置随机语句-它们必须在方法,构造函数中,或者将其放在括号中以形成initializer block。这就是使用此类初始化程序块的方式。

class YourClass {
    GameObject[] objs = new GameObject[5];

    {/* initializer block */
        objs[0] = new Sphere(new double[] {0,0,50},10,new Color(255,0,0));
    }
}

关于java - 带索引的数组分配仅在大括号中有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54172230/

10-10 02:17