这是我正在尝试做的事情:
public class myClass
{
int x;
int y;
}
我学过c ++,所以我试着这样做:
myClass [] a = new myClass[5];
for(int i =0; i < 4; i++)
a[i].x = 0;
这不会做任何事情,因为所有[i]都是空的。
我知道这是违反Java的基本原则的,但是有一个名为Alljoyn的产品,迫使我这样做,请参阅:
AllJoyn不允许类中的构造函数或其他方法。有没有其他方法来初始化纯结构?
答案 0 :(得分:5)
a[i]
是null
,因为数组中的引用已初始化为null
。您还没有创建任何对象。在循环中使用a[i] = new myClass()
。类myClass
的这个0参数构造函数将由Java生成。LikeThis
。a[i].x = 0
没用。 Read关于Java中的原始数据类型。默认情况下,int
字段由编译器初始化为0。i < 4
,您不会初始化最后一个元素(第5个元素)。总是更好i < a.length
。答案 1 :(得分:2)
您没有初始化任何对象,请尝试:
myClass [] a = new myClass[5];
for(int i =0; i < 4; i++){
a[i] = new myClass();
a[i].x = 0;
}
答案 2 :(得分:1)
您需要首先对阵列的所有myClass
进行初始化:
myClass[] a = new myClass[5];
for(int i =0; i < 4; i++) {
a[i] = new MyClass();
a[i].x = 0;
}