- ベストアンサー
オブジェクト名をforループ内で変更するには?
Java、Java3Dを最近始めたばかりのものです。 質問 Shape3D shape = new Shape3D(geometry,ap); 上記ような、“shape”、“ap”を forループ内で、“shape1, shape2, shape3, . . .”というように、オブジェクト名を変更していきたいのですが、どのように行ったらよいのでしょうか? 宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず「オブジェクト名」ではなく「変数名」です。 変数名に依存したロジックはそもそも間違っていると思ってください。 0..nといった添え字に何らかの意味があるのであれば(画面と密に依存性がある、等) 前者の回答の通り、配列かコレクションAPIを使用します。 まだJavaにあまり慣れていないようであれば、配列でも構わないと思います。 オブジェクトの個数(配列の範囲)が確定しているのであればなおさらです。 Shape3D[] shapes = new Shape3D[n]; shapes[index] = new Shape3D(); しかし、最終的にはコレクションAPIを使用することを目標としたほうがよいでしょう。
その他の回答 (1)
- meenie
- ベストアンサー率44% (40/90)
格納するオブジェクト名(shape)を変更していきたいと感じたときは、 配列の利用を検討してください。 (例) Shape3Dを格納する配列 java.util.ArrayList<Shape3D> shapeList; オブジェクト名も情報として必要なら java.util.HashMap<String,Shape3D> shapeMap; 次に、引数(ap)を変更していきたいと感じたときは、 引数のオブジェクトを配列に格納し、それをループで回してみてください。 用途がはっきりしませんのであまり具体的なことは言えません。 参考までにどうぞ。
補足
お早いお返事ありがとうございます。 用途としましては、10個程度ある空間物体(geometry)の表示を個別に ボタン設定で変化(POLYGON_LINE 又は POLYGON_FILL 又は setTransparency で 透明度を変えたり)させるプログラムを 作ろうとしています。 教えていただいたArrayListでのオブジェクト名の引渡し方ですが、 どのようにするとよろしいのでしょうか? 以下のようなプログラム構成を考えています。 素人質問ですみませんが、宜しくお願いいたします。 int i; ArrayList apList = new ArrayList(); ArrayList shapeList = new ArrayList(); for( i=0; i<=10; i++ ){ apList.add("ap"+i); shapeList.add("Shape"+i); } for( i=0; i<=10; i++ ){ Appearance の設定 Point3d で点を設定 QuadArray で geometry を生成 Shape3D shape = new Shape3D(geometry,ap); // ↑ここの記述が分かりません。 ↑ }
お礼
お返事ありがとうございます。 shape3Dの変数名を配列定義することで、プログラムの作成が進みました。 これから、まだまだ勉強していきたいと思います。 ありがとうございました。