Java初始化纯结构

时间:2013-03-18 20:59:11

标签: java

这是我正在尝试做的事情:

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的产品,迫使我这样做,请参阅:

https://www.alljoyn.org/docs-and-downloads/documentation/guide-alljoyn-development-using-java-sdk-rev-j#unique_28

AllJoyn不允许类中的构造函数或其他方法。有没有其他方法来初始化纯结构?

3 个答案:

答案 0 :(得分:5)

  1. 在Java中没有struct这样的东西。你所展示的是一堂课。
  2. 正如您所见a[i]null,因为数组中的引用已初始化为null。您还没有创建任何对象。在循环中使用a[i] = new myClass()。类myClass的这个0参数构造函数将由Java生成。
  3. 按照惯例,Java中的类名称是LikeThis
  4. a[i].x = 0没用。 Read关于Java中的原始数据类型。默认情况下,int字段由编译器初始化为0。
  5. 通过执行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;
}