• 締切済み

コンストラクターの引数が多い

Javaにオブジェクトとかインスタンスってあるじゃん。これを作るときの文法は決まっていて、 new コンストラクター(型 引数,型 引数,・・・); です。 ただ、モノには色々な属性(メタデータ、フィールド)があります。多いと数百数千のメタデータがあるでしょうし、今はビッグデータの時代ですから、数万数億の属性があるのかもしれません。この属性はコンストラクターの引数に相当すると思いますが、オブジェクト生成時にコンストラクター書いて引数を代入していくのでしょうか? ///// class T図書 { String タイトル,出版社,著者,用紙サイズ; int ページ数,販売額,印刷費用,重量mg,総文字数,初回発行部数,表紙の厚さmm; java.util.Calendar 発行年月日,作成年月日,構想年月日,認可年月日; T図書( String タイトル, String 出版社, String 著者, String 用紙サイズ, int ページ数, int 販売額, int 印刷費用, int 重量mg, int 総文字数, int 初回発行部数, int 表紙の厚さmm, java.util.Calendar 発行年月日, java.util.Calendar 作成年月日, java.util.Calendar 構想年月日, java.util.Calendar 認可年月日){} } class H発行{public static void main(String[] args){ java.util.Calendar h1821_11_4=java.util.Calendar.getInstance(); h1821_11_4.set(1821,11,4);//(日付セット繰り返し中略) new T図書("白い巨塔","新潮出版社","山崎豊子","A5", 345,2000,60,716,34569,20000,7, h1821_11_4,h1823_11_4,h1820_1_4,h1821_10_4); }} ///// この例だと15個です。許容範囲といえばそれまでですが、どこか違和感を感じております。そして、薬がクラスで、具体的な薬品がオブジェクトで、成分含有量がフィールドだとすると、コンストラクターの引数が莫大になると思う。 薬 ai00kity=new 錠剤薬(リプナビックスX,0,0,0,12,776,98.45,54,・・・・・); こんな感じ?

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

ものには限度というものはあるし、使う方も使いずらいので、そんな無茶な引数にも、フィールドにもしないのが普通です。 別に、コンストラクタだけがフィールド設定の方法ではありません。 後から設定すればよいでしょう。 > 今はビッグデータの時代ですから、数万数億の属性があるのかもしれません コンストラクタで指定したりせずに、データベース等から読み取るのが普通でしょう。 コンストラクタでは、データベースへのアクセスに必要な情報だけ、とか。 フィールドを持たずに、今計算で必要とする属性だけを、その都度データベースから読み出し、とするのがよいでしょう。 > 薬がクラス なら、成分クラスを作って、成分クラスの配列やリストを使うのが現実的でしょう。

回答No.1

Mapに入れて渡しちゃう

関連するQ&A

専門家に質問してみよう