重置变量和整个类

时间:2014-05-17 15:04:23

标签: java class variables

我正在制作一个java黑色杰克游戏,我需要处理每个新一轮的类,每次调用它时都会被重置(每个新一轮)。该类有以下变量:

public static LinkedList<String> playerHand = new LinkedList<>(), dealerHand = new LinkedList<>(); // creates hands for player and dealer
public static int playerValue, dealerValue; // value of the hand

这就是我从我的主课程中召唤这个课程的方式:

gameplay.NewRound.newHand(s);

&#39;游戏&#39;是java包,&#39; NewRound&#39;是班级,&#39; newHand&#39;是开始游戏玩法的空白,而且是#&是赌注。

我的问题是,课程重置,如手工值和链接列表等...如果我一直这样称呼它?或者我是否必须在NewRound类中添加MAIN并将其称为:

new gameplay.NewRound();

1 个答案:

答案 0 :(得分:0)

对于您的问题:除非您已实现了执行此操作的方法,否则没有内置方法可以“重置”现有的类实例。通常,您只需创建一个新实例,垃圾收集器就可以从未使用的对象中释放内存。在某些情况下,当您希望实现“重置”行为时:对象创建过于昂贵,或者某些业务逻辑仅需要一定量的现有实例。

基本上,使代码优雅和可读的最佳方法是使其复制域对象的行为。

我的建议是:Game课程的一个实例,它将跟踪整个游戏。此Game还有一个创建NewRound的方法,它将返回NewRound

的完全干净的实例
`
public class Game{
    private List<Round> roundList = new LinkedList<Round>();
    public Round startNewRound(int bet){
        Round newRound = new Round(bet);
        this.roundList.add(newRound);
        return newRound;
    }
}

public class Round{
    public List<String> dealerHand;
    public List<String> playerHand;
    public int bet;
    public Round(int bet){
        this.dealerHand = new LinkedList<String>();
        this.playerHand = new LinkedList<String>();
        this.bet = bet
    }
    public String compareHands(){
        //Some comparison between hands, return "dealer" or "player"
    }
}

public static void main(String[] args){
    Game game = new Game();
    Round roundOne = game.startNewRound(1);
    roundOne.dealerHand.add("Ace Of Spades");
    roundOne.playerHand.add("Some other card");
    System.out.println(roundOne.compareHands+" wins!");
    Round roundTwo = game.startNewRound(4);
    roundTwo.dealerHand.add("Another Ace Of Spades");
    roundTwo.playerHand.add("Some other stupid card");
    System.out.println(roundTwo.compareHands+" wins!");
}

`