-1

私はJavaで約7,000のゲームピースを持つゲームを持っています。各ピースは、 と呼ばれる基本オブジェクトを拡張しCardます。各ピースには異なるプロパティ (何ができるか) があります。


名前を呼び出して、これらのオブジェクトを動的にロードできるようにする必要があります。たとえば、ユーザーが「Card no.1」という名前のカードを使用したい場合、「Card no.1」と入力すると、新しい「Card_no1」オブジェクトが作成されます。これを行うにはどうすればよいですか?
すべてのオブジェクトを Hashtable に配置し、その名前をキーとして使用することを考えました。より良いアイデアはありますか?
編集: カード オブジェクトは既にプログラムされています。それらをロードする方法がわかりません。新しいオブジェクトを作成して名前を付けるのではなく、名前を使用してそれらを取得できるようにする必要があります。これは、個々のエフェクトをすべてプログラムする必要があるためです。

4

3 に答える 3

0

あなたが達成しようとしているのはこれだと思います

ユーザー タイプ card no 1 として、値が「Card no1」に設定された特定のプロパティを持つ新しいオブジェクトを作成します。したがって、ユーザーが card の名前を入力したら、新しいオブジェクトを作成します

 String userInput= req.getParamter("cardSeq");
 Card card1 = new Card();
 card1.setName(userInput)

答えは非常に簡単ですが、これはあなたが達成しようとしていると思います。

于 2013-07-13T16:25:59.633 に答える
0

カードごとにクラス ファイルがあり、呼び出されたときに新しいオブジェクトを作成したい場合は、必要なものにハッシュテーブルを含める必要はありません。代わりに次のようにします (プログラムでクラスをインスタンス化します)。

import java.lang.reflect.*;
import java.lang.reflect.Constructor.*;

String cardName = <whatever>
Card newCard = Class.forName(cardName).getDeclaredConstructor().newInstance();

ゲームのピースがクラス ファイルではなくオブジェクトで表される場合 (つまり、7,000 の異なるクラス ファイルがない場合)、各カードにはnameフィールドが必要です。その場合、あなたができることは、それらの名前をキーとして使用して、それらすべてをハッシュマップに貼り付けることです。次に、特定のタイプの新しいカードを作成する場合は、そのオブジェクトを取得して を呼び出しますclone()

于 2013-07-13T16:29:20.353 に答える
0

7000 枚のカードのプールからカードを取得する最善の方法は既にわかっています。同期に関連する理由から、HashTable の代わりに HashMap を使用してください。

また、hashCode および equals メソッドを正しくオーバーライドすることを忘れないでください。

于 2013-07-13T16:30:39.123 に答える