0

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

public class myClass
{
  int x;
  int y;
}

我学过 c++,所以我尝试这样做:

myClass [] a  = new myClass[5];
for(int i =0; i < 4; i++)
    a[i].x = 0;

这没有做任何事情,因为所有 a[i] 都是空的。

我知道这违反了 Java 的基本原则,但是有一个名为 Alljoyn 的产品,它迫使我这样做,请参阅:

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

AllJoyn 不允许在类中使用构造函数或其他方法。还有其他方法可以初始化纯结构吗?

4

3 回答 3

5
  1. 在 Java 中没有结构这样的东西。你介绍的是一门课。
  2. 正如您所观察到a[i]的那样null,因为您的数组中的引用被初始化为null. 您还没有创建任何对象。a[i] = new myClass()在你的循环中使用。这个类的 0 参数构造函数myClass将由 Java 生成。
  3. Java 中类的名称是按照LikeThis约定编写的。
  4. a[i].x = 0没用。阅读Java 中的原始数据类型。int默认情况下,编译器将字段初始化为 0。
  5. 通过这样做i < 4,您不会初始化最后一个元素(第 5 个)。最好总是这样做i < a.length
于 2013-03-18T21:05:01.073 回答
2

您没有初始化任何对象,请尝试:

myClass [] a  = new myClass[5];
for(int i =0; i < 4; i++){
    a[i] = new myClass();
    a[i].x = 0;
}
于 2013-03-18T21:02:00.697 回答
1

您需要首先初始化所有myClass数组:

myClass[] a  = new myClass[5];
for(int i =0; i < 4; i++) {
    a[i] = new MyClass();
    a[i].x = 0;
}
于 2013-03-18T21:02:02.537 回答