繁体   English   中英

如何将更新的全局类变量从一种方法传递到另一种方法?

[英]How do you pass an updated global class variable from one method into another?

我在一个方法中更新了变量(在类中是全局变量),但似乎无法将更新后的变量传递给另一个方法。 任何帮助,将不胜感激,谢谢。 这是我缩短的代码:

public class Game{

    private int randomIndexX;

    protected String spawn(){
        randomIndexX = randomGenerator.nextInt(10);
        return null;
    }

    protected String test(){
        System.out.println(this.randomIndexX);
        return null;
    }
}


public class Player extends Game{
    protected String getNextAction(String command) {
        switch(command){
            case "test":
                test();
                break;
        }
    }
}


public static void main(String[] args) {
    Game game = new Game();
    Player player = new Player();

    game.spawn();
    player.getInputFromConsole();
}

编辑:因此,当我从Player类调用test()时,我希望它打印出randomIndexX,但即使在test()方法中使用this.randomIndexX,它仍似乎无法正常工作

我可以看到的第一个问题是您没有构造函数。(可选)(如果不创建,则编译器将生成所谓的“默认”构造函数,该构造函数没有任何参数。通常是好的做法显式创建类构造函数。

我可以看到的第二个问题是您缺少尾括号。 修复如下所示。

public class Game

{

private int randomIndexX;

protected String spawn()
{
    randomIndexX = 0;
    return null;
}

protected String test()
{
    System.out.println(randomIndexX);
    return null;
}

}

您可以构造它并触发所需的任何方法:

Game game = new Game();
game.spawn();
game.test()

编辑:因此,当我从Player类调用test()时,我希望它打印出randomIndexX,但即使在test()方法中使用this.randomIndexX,它仍似乎无法正常工作。

因此,test()是实例方法,这意味着您必须制作Class Game的实例才能调用该方法,您的randomIndexX是实例成员,因此您需要仔细考虑您想做的事情,如果randomIndexX对于所有Game类的对象,应将其声明为static,如下所示:

private static in randomIndexX;

因为它的值不会根据对象实例而改变。

因此,为了从类外部访问该变量(因为它是私有的),您需要声明一个公共方法来检索该值(getter或也称为访问器):

public static int getRandomIndex(){
    return randomIndexX;
}

因此,在主要情况下,您甚至不必制作Game类的实例来访问randomIndexX中保存的值,只需调用getter方法,如下所示:

System.out.println(Game.getRandomIndex());

上面的行将在控制台上显示0,因为0是int类型成员的默认值,现在,如果您希望能够对其进行更改,则只需在Game类中设置setter或mutator方法即可:

public static void setRandomIndex(int n){
   randomIndexX = n;
}

现在,您可以在Game类之外设置和检索“ randomIndexX”字段。

例如,下面的代码将把randomIndexX的值设置为5,然后在控制台中打印它:

Game.setRandomIndex(5);
System.out.println(Game.getRandomIndex());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM