在我的Character类中,我有简单的方法getHealth
:
public int getHealth(){
return health;
}
在另一个课程中,我有以下方法
public static void playerCombat(ArrayList attacking, ArrayList targets){
此方法采用2个3个字符的数组。
我还有条件,它只能在玩家健康状况> 0
public static void playerCombat(ArrayList attacking, ArrayList targets){
While(attacking.get(0).getHealth() > 0){
blablabla
}
}
我收到以下错误:
Driver.java:13: cannot find symbol
symbol : method getHealth()
location: class java.lang.Object
但是在下面的Main方法中我使用getHealth()方法,它工作正常。我如何解决这个/为什么它在main方法中有效但不是这个?
答案 0 :(得分:6)
您使用的是原始集合类型而不是参数化类型,因此Java不知道集合中的内容是Character
。你应该对此发出警告;这是有原因的。 (顺便说一句,Character
是一个危险的类名,因为它与java.lang.Character
冲突。)
将ArrayList
参数替换为ArrayList<Character>
,或者更好,仅List<Character>
。
答案 1 :(得分:0)
get(0)
返回Object
。你需要施展
YourCharacterClass c = (YourCharacterClass)attacking.get(0);
While(c.getHealth() > 0){
blablabla
}
或推荐的方法是更改方法sigature
playerCombat(ArrayList<YourCharacterClass > attacking, ArrayList<YourCharacterClass > targets){
注意:
Java已经有一个Character类名,它是char
的包装器,可以将您的类重命名为某个自定义名称。
答案 2 :(得分:0)
ArrayList对象没有getHealth方法,但是没有字符类。
修改您的函数定义:
public static void playerCombat(ArrayList&lt; Charcter&gt; attacking,ArrayList&lt; Charcter&gt; targets){