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] が null であるため、これは何もしません。

これが 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]です。まだオブジェクトを作成していません。ループで使用します。このクラスの引数なしのコンストラクターは、Java によって生成されます。nullnulla[i] = new myClass()myClass
  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 に答える