我在一个名为Pokemon的类中有这些setter和getter但我想制作一系列攻击,速度和防御。如何将getter中使用的东西用于此方法?我试图在另一个名为Pokedex的类中创建这个数组,但是我得到一个错误,说这些方法无法解析或不是字段。注意:这些类所在的java文件恰好位于同一个包中。
public int [] checkStats(String species){
int [] stats = {Pokemon.getDefense, Pokemon.getSpeed, Pokemon.getAttack};
return stats;
}
public int getAttack(){
return attack;
}
public void setAttack(int atk){
attack = atk;
}
public int getDefense(){
return defense;
}
public void setDefense(int def){
defense = def;
}
public int getSpeed(){
return speed;
}
public void setSpeed(int spd){
speed = spd;
}
答案 0 :(得分:0)
您在这里缺少方括号()
:
{Pokemon.getDefense, Pokemon.getSpeed, Pokemon.getAttack};
使用:
{getDefense(), getSpeed(), getAttack()};
OR:
{this.getDefense(), this.getSpeed(), this.getAttack()};
P.S。 Pokemon.getDefense()
这适用于静态方法。
答案 1 :(得分:0)
我看到的主要问题是Pokemon.getDefense
不是你班上的静态属性或字段。你有一个getDefense()
方法,但这不是这里引用的方法。
您也不需要该参数,因此可以安全删除。
您可以将该方法更改为更简单的方法,这将编译并有意义:
public int[] checkStats(){
return new int[]{ getDefense(), getSpeed(), getAttack() };
}
答案 2 :(得分:0)
当你在Java中调用方法时,你必须用括号调用它们(这个关键字指的是'this'类,在这种情况下是口袋妖怪)
this.getDefense();
我也建议你改变使用
的二传手this.attack=attack
this.attack是指在该类中初始化的攻击,对它自己的攻击是指攻击被传递到该方法中。
这将使您免于将攻击更改为atk等。它只会让您的生活更轻松,您的代码也更容易阅读。如果你想看一下这个概念,请看here。希望这会帮助你!