带有字符串和嵌套类的Java android多维数组(可能是散列)
我正在努力跟踪我正在开发的一款android游戏的班级统计数据带有字符串和嵌套类的Java android多维数组(可能是散列),java,android,hash,map,multidimensional-array,Java,Android,Hash,Map,Multidimensional Array,我正在努力跟踪我正在开发的一款android游戏的班级统计数据 public static class characterClasses { public String class_name; public int base_hp; public int base_attack; public float base_defense; } 我想通过名字直接访问这些文件,这样我就不必重复访问它们了。从我的研究来看,我需要一个hashmap或map,但我所看到
public static class characterClasses {
public String class_name;
public int base_hp;
public int base_attack;
public float base_defense;
}
我想通过名字直接访问这些文件,这样我就不必重复访问它们了。从我的研究来看,我需要一个hashmap或map,但我所看到的只是一个键/值对。我需要通过类和值直接访问每个stat值,比如
classList.get(“战士”).get(“基本生命”)
有人能给我指出正确的方向吗?您认为使用HashMap是正确的。您可以将
字符类字符串名称
用作键
,将字符类
用作值。然后,您可以使用getter
方法访问特定字段,即
classList.get("warrior").getBase_HP();
您也可以完全忘记地图,因为通过使用继承,这些统计数据看起来是恒定的
public class Character {
int hp;
int attack;
int defense;
public Character (int hp, int attack, int defense) {
this.hp = hp;
this.attack = attack;
this.defense = defense;
}
public int getHP() {
return hp;
}
...
}
对于角色子类,可以在构造函数中预设这些值
public class Warrior extends Character {
public Warrior() {
super(2, 10, 8);
}
public int getHP() {
return super.getHP();
}
}
public class Wizard extends Character {
public Wizard() {
super(10, 3, 1);
}
public int getHP() {
return super.getHP();
}
}
这样,您的所有战士和向导对象都将具有相同的统计信息,只需调用其getter即可随时访问。这非常有帮助,谢谢!我从一个数据库中加载初始值,每个类都有一行数据。既然我不能为类名创建动态变量,我如何引用需要设置或获取的类?我可能只是以错误的方式思考这个问题,但我似乎无法将我的思考过程总结为如何从变量cc.class_name获取/设置Warrior/Wizard类。至少在不检查cc.class_name==“warrior”等的情况下是这样,这似乎是一种浪费。@Sym如果使用继承解决方案,那么您将知道由于类实例而拥有的对象类型。因此,在循环数据库时,请检查名称行。例如,如果
name=“wizard”
wizard wiz=newwizard();字符。添加(wiz);您可以使用switch
语句计算名称,并为不同的对象创建不同的对象。我明白了。所以没有一种方法可以基于数据库中数据的值来访问它?会有很多课。这就是为什么我开始看地图的原因。我不能做Character cc.class_name=new Character();经过更多的研究,你发布的信息,再加上一些尝试和错误,我有了一些我想要的东西。谢谢