类之间的修复方法冲突?

时间:2013-11-24 09:30:22

标签: java arraylist

在我的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方法中有效但不是这个?

3 个答案:

答案 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){