Java 如何使用在不同类中制作的getter?

Java 如何使用在不同类中制作的getter?,java,Java,我在一个叫做口袋妖怪的类中有这些二传手和传接手,但我想做一个攻击、速度和防御的数组。我如何将getter中使用的东西引入这个方法?我试图在另一个名为Pokedex的类中创建此数组,但我得到一个错误,即这些方法无法解析或不是字段。注意:这些类所在的java文件恰好位于同一个包中 public int [] checkStats(String species){ int [] stats = {Pokemon.getDefense, Pokemon.getSpeed, Pokemon.ge

我在一个叫做口袋妖怪的类中有这些二传手和传接手,但我想做一个攻击、速度和防御的数组。我如何将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;
}

此处缺少括号
()

{Pokemon.getDefense, Pokemon.getSpeed, Pokemon.getAttack};
使用:

或:


p.S.
Pokemon.getDefense()
这适用于静态方法。

我看到的主要问题是
Pokemon.getDefense
不是类中的静态属性或字段。您有一个
getDefense()
方法,但这里并没有引用这个方法

您也不需要该参数,因此可以安全地删除它

您可以将该方法更改为更简单的方法,这将编译并有意义:

public int[] checkStats(){
    return new int[]{ getDefense(), getSpeed(), getAttack() };
}

在Java中调用方法时,必须使用括号来调用它们(this关键字指的是'this'类,在本例中是Pokemon)

此外,我建议您将设置器更改为使用

this.attack=attack
this.attack是指在该类中初始化的攻击,而对它本身的攻击是指传递到该方法中的攻击


这将避免您将攻击更改为atk等。它只会使您的生活更轻松,代码更易于阅读。如果你想看看这个概念,看看。希望这对你有帮助

你想在哪个口袋妖怪上调用这些方法?可能一个很大的提示是你正在将
字符串物种
传递给
checkStats
,但从未使用它。看起来您正在使用一些静态字段。了解这意味着什么。缺少括号2。给第三班的学生打电话。格式化。。。如果我是你,我会先读OOP的基本原理。很难回答这个问题,因为java规范只允许您在Pokemon 1-150上调用它们。任何其他操作都会导致
儿童期未找到
异常;这在很大程度上是一种转移注意力的手段,它会分散对编译失败的注意力
在这种情况下,这也不是必需的,但可能是一种风格偏好,而不是其他任何东西。我忘了粘贴代码,根据攻击防御和速度的精确计算方法。我对这个网站相当陌生,我为我的无知道歉,但这确实帮助了我,谢谢。谢谢,这帮助我解决了我的问题。我确实需要参数,但我从来不知道你可以返回这样一个完整的数组,而不首先将它赋给变量,所以感谢你的新知识。@Tip\u tap:你没有使用参数,所以传入它是没有意义的。您可以传入
null
,它仍然具有相同的效果。
public int[] checkStats(){
    return new int[]{ getDefense(), getSpeed(), getAttack() };
}
this.getDefense();
this.attack=attack