我遇到一个奇怪的问题,我无法通过索引将值(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/