使用方法中传递的另一个参数获取对象的参数 - Java

时间:2018-06-01 13:55:59

标签: java oop parameters

我创建了4个包含4个参数的charater对象,其中包括id。如何使用其构造函数参数之一访问对象的另一个参数?例如,我想创建一个将id作为参数的方法,并且使用该id,我想指定用户在谈论哪个字符,这样我就可以得到特定字符的参数(Name等)。

角色对象

    Character warrior = new Character("Warrior", 60, 15+rn.nextInt(5), 1); //name, health, damage, id
    Character skeleton = new Character("Skeleton", 90, 20+rn.nextInt(10), 2);

方法我正在尝试创建

public void spawnEnemy(int id){
    System.out.printf("%s appeared!", //get character's name with id);

}

3 个答案:

答案 0 :(得分:1)

如果所有Character都有唯一的id,您可以将它们放入java.util.HashMap

HashMap<Integer, Character> map = new HashMap<>();
Character warrior = new Character("Warrior", 60, 15+rn.nextInt(5), 1);
map.put(1, warrior);

然后,您可以使用get

致电warrior id 1
public void spawnEnemy(int id){
    System.out.printf("%s appeared!", map.get(id));
}

答案 1 :(得分:0)

您可以创建全局哈希映射,也可以将<Integer, Character>的哈希映射传递给您的方法以快速查找字符

答案 2 :(得分:0)

如果你可以修改Character类,你可以给它一个静态的,即“全局”,Map来跟踪所有实例。这样,客户端代码就不必担心跟踪。

public class Character {

  // "Global" Map that tracks all Character instances by ID
  private static HashMap<Integer, Character> idToCharacter = new HashMap<>();

  // Fields, etc...

  public Character(String name, int health, int damage, int id) {
    // Set field values, etc...

    // Track this new Character
    idToCharacter.put(id);
  }

  // "Global" method for getting a Character by ID
  public static Character getCharacter(int id) {
    return idToCharacter.get(id);
  }

}

然后您的客户端代码只需调用getCharacter

public void spawnEnemy(int id){
  System.out.printf("%s appeared!", Character.getCharacter(id).getName());
}