我创建了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);
}
答案 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());
}