小编Jak*_*mas的帖子

使用超类创建构建器时,父级不能返回子类的实例

如果我使用构建器模式来配置新对象,我可能有两个类GameHockeyGame(如下所示).当我想创建一个新的时HockeyGame,我得到它的构建器并开始调用方法来根据需要配置对象.

我遇到的问题显示在main函数中.一旦我从超类中调用一个方法,它就作为一个intance返回Game.Builder,我不能再调用子类中的任何方法.

处理这个问题的最佳方法是什么?

Main.java

class Main {

    public static void main(String[] args){

        HockeyGame hg = new HockeyGame.Builder()
                .setScore(5)
                .setTimeLimit(3600)
//--------------------------------------------------------------------
                .setIceTemperature(-5) // Error! Cannot call setIceTempurature() on
                                       // an instance of Game.Builder
//--------------------------------------------------------------------
                .build();


    }
}
Run Code Online (Sandbox Code Playgroud)

Game.java

public class Game{

    int score;
    int timeLimit;

    public Game(int score, int timeLimit) {
        this.score = score;
        this.timeLimit = timeLimit;
    }

    public static class Builder {

        int score;
        int timeLimit;

        public Builder setScore(int score) {
            this.score …
Run Code Online (Sandbox Code Playgroud)

java design-patterns builder

3
推荐指数
1
解决办法
1132
查看次数

标签 统计

builder ×1

design-patterns ×1

java ×1