2012-03-13 25 views
-1

これらの値をすべてDetailクラスから作成しようとしています。この配列を作成するより良い方法はありますか?同じオブジェクトから複数の値を配列内に格納する

Details[] DetailsArray = new Details[10]; 
     Details Details = new Details(); 
     Details Details2 = new Details(); 
     Details Details3 = new Details(); 
     Details Details4 = new Details(); 
     Details Details5 = new Details(); 
     Details Details6 = new Details(); 


     Details.setNumber(new Integer(1)); 
     Details2.setEmployeeID(new Double(300)); 
     Details3.setCurrency("Euro"); 
     Details4.setSize(new Double (400)); 
     Details5.setEvent("Something"); 
     Details6.setId(new Integer(10)); 


     DetailsArray[0] = Details; 
     DetailsArray[1] = Details2; 
     DetailsArray[2] = Details3; 
     DetailsArray[3] = Details4; 
     DetailsArray[4] = Details5; 
     DetailsArray[5] = Details6; 

     System.out.println(DetailsArray); 
     EmployeeDetails.setDetails(DetailsArray); 
+0

IMHO、 'Details'オブジェクトはこれらの属性のいずれかを格納することが可能であるが、それらのすべてのためのスペースを確保している、あなたはそれが間違ってやっている場合。特にあなたがそれらの6つを使用している場合! – Alnitak

+3

あなたは何をもっと良く説明できますか? – shift66

答えて

0

forループを使用しますか?

Details[] detailsArray = new Details[10]; 
for (int i = 0; i < detailsArray.length; i++) 
    detailsArray[i] = new Details(); 

detailsArray[0].setNumber(New Integer(1)); 
... 

実際にはまれに、実際のコードでは静的な配列がありますが、これは手動で作成することになります。そうした場合は、それらのオブジェクトのデータを外部ファイル、または実際には他のデータ構造に完全に収めたいかもしれません。

0

まあ、それは正直に言うと開始するため、かなり奇妙なコードですが、これは動作します:

// Why are you creating an array with 10 elements but only using 6? 
Details[] detailsArray = new Details[10]; 
for (int i = 0; i < 6; i++) { 
    detailsArray[i] = new Details(); 
} 

detailsArray[0].setNumber(new Integer(1)); 
detailsArray[1].setEmployeeID(new Double(300)); 
detailsArray[2].setCurrency("Euro"); 
detailsArray[3].setSize(new Double (400)); 
detailsArray[4].setEvent("Something"); 
detailsArray[5].setId(new Integer(10)); 

あなた本当には、各オブジェクトに異なるプロパティを設定しますか? 本当に 1つのオブジェクトに複数のプロパティを設定したいですか?

+0

それは非常に奇妙なコードです - 私は 'Details'クラスが動作するはずですHTHを見てみたい! – Alnitak

0

あなたは、配列の代わりにリストを使用することができますが、私はあなたが達成しようとしているものを理解していれば、あなたは多分、代わりにこれをしたい、あなたのdetailsオブジェクトは、その従業員のためにすべての情報を保持している場所:

Details details = new Details(); 

    details.setNumber(new Integer(1)); 
    details.setEmployeeID(new Double(300)); 
    details.setCurrency("Euro"); 
    details.setSize(new Double (400)); 
    details.setEvent("Something"); 
    details.setId(new Integer(10)); 

    System.out.println(details); 
    EmployeeDetails.setDetails(details); 
0

必要なすべてのパラメータを受け入れるコンストラクタを作成します。そして、このような何かを:

deatilsArray =新しいDetailsArray [] { 新しい詳細(1、300、 "ユーロ"、400、 "サムシング")、 新しい詳細(2、400、 "ドル"、500、 "Something else")、 .................. };

代わりにあなたが詳細フィールドを開始し、他のクラスのDetailsBuilder作成することができます。ところで、常にJavaの命名規則変数名に応じ

DetailsBuilder builder = new DetailsBuilder(); 
deatilsArray = new DetailsArray[] { 
builder.create().setName("aaa").setEmployeeId(123).setCurrency("Euro").getInstance(), 
builder.create().setName("bbb").setEmployeeId(123).setCurrency("Euro").getInstance(), 
}; 

:この場合、上記のコードは次のようになります

Details d = 
new DetailsBuilder().create().setName("aaa").setEmployeeId(123).setCurrency("Euro").getInstance(); 

を小文字で始まります。

0

一時的な内部クラスを使用するソリューション。

class Pwn { 
      final Details d = new Details(); 
    } 

    Details[] detailsArray = new Details[] { 
     (new Pwn(){{ d.setNumber(new Integer(1));  }}).d, 
     (new Pwn(){{ d.setEmployeeID(new Double(300)); }}).d, 
     (new Pwn(){{ d.setCurrency("Euro");   }}).d, 
     (new Pwn(){{ d.setSize(new Double (400));  }}).d, 
     (new Pwn(){{ d.setEvent("Something");   }}).d, 
     (new Pwn(){{ d.setId(new Integer(10));   }}).d 
    } 

:)

+0

うわー、今目が痛い – pap

+0

Pwned! :)貧しい男の閉鎖は時々本当に働く。例えば単体テストである。 – DRCB

関連する問題