尝试在其自身方法的参数中传递对象时出错

时间:2018-11-03 22:52:52

标签: java

我有一个“字符”类,其中包含“状态”对象的ArrayList。这些状态对象具有方法trigger(Character charac),该方法需要使用存储在其中的字符对象:

public abstract class State {
    private int turns;
    public void trigger(Character charac){
        action(charac);
        turns--;
    }
    public abstract void action(Character charac);
}

当我尝试使用“ this”作为参数时(在下面的triggerStates方法中查看),netbeans告诉我“不兼容的类型:projet.m1s1.Character无法转换为java.lang.Character”

public class Character extends Living{

    private ArrayList states;

    public Character(String name,int life, int mana, int strengh, int intelligence, int armor){
        super(name,life,mana,strengh,intelligence,armor);
        states = new ArrayList();
    }

    public void triggerStates(){
        for(int i=0 ; i<states.size() ; i++){
            try{
                State sta = (State)states.get(i);
                sta.trigger(this);
            }
            catch (ClassCastException e){
                System.out.println("ClassCastException in Character.TriggerStates");
            }
        }
    }

}

希望我让自己很清楚,并且不问一个常见问题。

预先感谢您的回答!

2 个答案:

答案 0 :(得分:0)

您在导入中导入了错误的类。您应该导入java.lang.Character时已经导入了projet.m1s1.Character

在本地运行代码时,这种方式没有问题。

答案 1 :(得分:0)

最后设法使其工作,这两个类位于单独的程序包中,我只需要导入“ import projet.m1s1.Character;”即可。在国家班上