对于初学者来说,我有两个相关的类:Enemies.java 和 Sarz.java。敌人延伸了萨兹。
public class Enemies extends Sarz {
它有一个数组,里面有一些敌方物体。
enemies[0] = new Enemies("Dragon", 100, 100, "Cave");
enemies[1] = new Enemies("Saturn Fly Trap", 10, 15, "Forest");
在 Sarz 中,我创建了一个 Sarz 类型的数组,并在其中存储了一些随机生成的敌人。
Enemies e = new Enemies();
e.generateEnemies();
Sarz[][] map = new Sarz[5][5];
while (count < 4){
row = r.nextInt(5);
column = r.nextInt(5);
if (map[row][column] == null){
map[row][column] = e.enemies[r.nextInt(8)];
System.out.println(map[row][column].getName() + " at " + row + "," + column);
count++;
}
}
我的问题是,当我使用 println 语句进行测试时,它们已正确存储在随机点中,但我似乎无法得到任何东西来将敌人名称返回给我。我尝试过使用 Arrays.toString() 以及 Enemies 类的 getter 和 setter,但它们不适用于 map 数组,因为它是 Sarz 类型。我希望能够使用 map[row][column].getEnemyName() 或至少返回一个字符串而不是 1,0 处的 Enemies@14ae5a5。
最佳答案
由于 Enemies
扩展了 Sarz
,因此您可以将 Sarz
转换为 Enemies
的对象(如果它是有效的。)所以,你可以这样做:
System.out.println(((Enemies)map[row][column]).getEnemyName() + " at " + row + "," + column);
关于java - 如何在数组的对象上使用另一个类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36938285/