-1

我有一个 Java 游戏,大约有 7,000 个游戏块。每个部分都扩展了一个名为Card. 每件作品都有不同的属性(它可以做什么)。


我需要能够通过调用它们的名称来动态加载这些对象。所以说用户想使用一张名为“Card no.1”的卡,他会输入“Card no.1”,然后它应该创建一个新的“Card_no1”对象。我该怎么做呢?
我考虑过将每个对象放在一个 Hashtable 中,并使用它的名称作为键。有更好的想法吗?
编辑:我已经编程了卡片对象。我只是不确定如何加载它们。我需要能够通过使用它们的名称来检索它们,而不是创建一个新对象并将其命名。这是因为我必须对每个单独的效果进行编程。

4

3 回答 3

0

我认为你想要实现的是这个

作为用户类型 1 号卡,创建一个具有特定属性集的新对象,其值为“卡号 1”。因此,一旦用户为 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 张卡片 HashMap 池中获取卡片的最佳方法。出于与同步相关的原因,请使用 HashMap 而不是 HashTable。

请记住正确覆盖 hashCode 和 equals 方法。

于 2013-07-13T16:30:39.123 回答