Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有字符串和嵌套类的Java android多维数组(可能是散列)_Java_Android_Hash_Map_Multidimensional Array - Fatal编程技术网

带有字符串和嵌套类的Java 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,但我所看到

我正在努力跟踪我正在开发的一款android游戏的班级统计数据

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();经过更多的研究,你发布的信息,再加上一些尝试和错误,我有了一些我想要的东西。谢谢