这将有点难以解释,但我会尽力而为。
我想要多个项目,当单击时,每个项目都有不同的结果。其余的,它们都具有相同的变量。所以基本上,我有一个 Item 类,还有 Ball、Rope、Book 的子类,还有很多很多的子类。如果我愿意,我希望能够轻松添加项目。Item 类具有字符串名称、字符串描述和每个子类都覆盖的方法“onUse”。
我想尽可能动态地处理这个问题,这意味着我想在我的框架/活动中使用一个方法(这适用于 Android,但适用于 Java)来执行该方法。
我将其用于单一方法:
public void useItem(Item i)
{
i.onUse();
}
我的问题是我将不同的项目保存在数据库中。我想从数据库中随机抓取其中一项并实例化它;除了我无法知道将它实例化为哪个子类。我尝试将数据类型保存在数据库中,但这并没有真正奏效......伪代码:
//Database cursor stuff
//...
String itemType = c.getString(6);
//Get the class name if possible
Class itemClass= null;
try {
itemClass = Class.forName(itemType);
} catch (ClassNotFoundException)
e.printStackTrace();
}
Item l = null;
// Check here what type it is!
if (itemClass.equals(Ball.class)) {
l = new Ball(name,description);
} else if(lootClass.equals(Book.class)){
l = new Book(name,description);
}
看到有这么多不同的项目,这并不是很好,因为我必须遍历大量的类(加上我经常得到 ClassNotFoundException)
你说什么,StackOverflow?最好的方法是什么?