构造函数中预定的可能值

时间:2012-03-10 19:18:27

标签: java types javadoc

假设我有一个制作球的课程。在构造函数中,它接受String来表示球的类型,但我只希望它接受某些值,例如:"FOOTBALL""BASEBALL""SOCCERBALL",所以如果我将我的类传递给另一个开发人员并且他们在Eclipse中使用它,它会提示他们接受的值。我该怎么办?我不知道是否有一种我可以使用的通用技术或它可能被称为什么,所以欢迎指向教程或示例的指针。

public class Ball {
    public Ball(String type){
        …
    }
}

3 个答案:

答案 0 :(得分:8)

您可以使用enum代替字符串,如下所示。枚举非常强大,所以你可以为每种球类型添加一个弹跳方法,每种球类型都知道它们应该如何反弹(参见上面的链接以获取更多信息/示例)。这也解决了限制价值的问题。如果您没有在枚举中创建MEATBALL类型,则没有人可以将肉球作为构造函数的类型传递。

public enum BallType {
     FOOTBALL,
     BASEBALL,
     SOCCERBALL;
}

public Ball(BallType type) {
}

答案 1 :(得分:2)

除非另有说明,否则这是一个默认为FOOTBALL的Ball类:

public class Ball {

    public static final int FOOTBALL = 0;
    public static final int BASEBALL = 1;
    public static final int SOCCERBALL = 2;

    int ball;

     public Ball(){
        this.ball = Ball.FOOTBALL;
     }// end constructor

    /**
     *  Class constructor.
     *
     * @param ball sets the ball value.<p>
     * <b>ball</b> must be one of the following: Ball.FOOTBALL, Ball.BASEBALL,
     *             Ball.SOCCERBALL.
     */
     public Ball(int ball){          
        setBall(ball);       
     }// end constructor

     public int getBall(){
         return ball;
     }// end getBall()

     public void setBall(int ball){          
         switch(ball){           
         case 1:
             this.ball = Ball.BASEBALL;
             break;
         case 2:
             this.ball = Ball.SOCCERBALL;
             break;
         default:
             this.ball = Ball.FOOTBALL;
             break;          
         }// end switch          
     }// end setBall()       
}// end class Ball

编辑:

我为javadoc添加了doc评论,我认为这是你正在寻找的。请查看此链接:How to Write Doc Comments for the Javadoc Tool

答案 2 :(得分:0)

如何在类中声明公共静态常量?例如,像:

public static final String BALL_FOOTBALL =“FOOTBALL”; ...

如果在球类型错误时抛出异常,则会强制其他开发人员使用其中一个预定义常量。

希望它有用!