Java 构造函数中预先确定的可能值
比如说,我有一个能做球的班级。在构造函数中,它接受一个Java 构造函数中预先确定的可能值,java,types,javadoc,Java,Types,Javadoc,比如说,我有一个能做球的班级。在构造函数中,它接受一个字符串,以指示球的类型,但我只希望它接受某些值,如:“FOOTBALL”,“ball”,或“SOCCERBALL”,这样,如果我将类传递给另一个开发人员,他们在Eclipse中使用它,它会提示他们接受的值。我该怎么做?我不知道是否有一个通用的技术,我可以使用或它可能会被称为什么,所以指向一个教程或例子将是受欢迎的 public class Ball { public Ball(String type){ … }
字符串,以指示球的类型,但我只希望它接受某些值,如:“FOOTBALL”
,“ball”
,或“SOCCERBALL”
,这样,如果我将类传递给另一个开发人员,他们在Eclipse中使用它,它会提示他们接受的值。我该怎么做?我不知道是否有一个通用的技术,我可以使用或它可能会被称为什么,所以指向一个教程或例子将是受欢迎的
public class Ball {
public Ball(String type){
…
}
}
您可以使用一个而不是字符串,如下所示。枚举非常强大,因此您可以为每个球类型添加一个bounce方法,每个球类型都知道它们应该如何反弹(有关更多信息/示例,请参阅上面的链接)。这也解决了限制值的问题。如果不在枚举中创建MEATBALL类型,则没有人可以将MEATBALL作为构造函数的类型传递
public enum BallType {
FOOTBALL,
BASEBALL,
SOCCERBALL;
}
public Ball(BallType type) {
}
您可以使用一个而不是字符串,如下所示。枚举非常强大,因此您可以为每个球类型添加一个bounce方法,每个球类型都知道它们应该如何反弹(有关更多信息/示例,请参阅上面的链接)。这也解决了限制值的问题。如果不在枚举中创建MEATBALL类型,则没有人可以将MEATBALL作为构造函数的类型传递
public enum BallType {
FOOTBALL,
BASEBALL,
SOCCERBALL;
}
public Ball(BallType type) {
}
在类中声明公共静态常量怎么样?例如,类似于:
公共静态最终弦球\u FOOTBALL=“FOOTBALL”;
如果您在ball类型错误时抛出异常,它将强制其他开发人员使用预定义的常量之一
希望对你有帮助 在类中声明公共静态常量怎么样?例如,类似于:
公共静态最终弦球\u FOOTBALL=“FOOTBALL”;
如果您在ball类型错误时抛出异常,它将强制其他开发人员使用预定义的常量之一
希望对你有帮助 这里有一个默认为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
公开课舞会{
公共静态决赛int FOOTBALL=0;
公共静态最终积分=1;
公共静态最终国际足球赛=2;
int-ball;
公共舞会{
这个球=足球;
}//端构造函数
/**
*类构造函数。
*
*@param-ball设置球值。
*球必须是下列之一:球。足球,球。棒球,
*球,足球。
*/
公共球(内球){
挫折球;
}//端构造函数
公共int getBall(){
回球;
}//结束getBall()
公众球(界内球){
开关(球){
案例1:
这个球=棒球;
打破
案例2:
this.ball=ball.SOCCERBALL;
打破
违约:
这个球=足球;
打破
}//终端开关
}//(完)
}//末级球
编辑:
我为javadoc添加了doc注释,我想这正是您需要的。查看此链接:这里有一个默认为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
公开课舞会{
公共静态决赛int FOOTBALL=0;
公共静态最终积分=1;
公共静态最终国际足球赛=2;
int-ball;
公共舞会{
这个球=足球;
}//端构造函数
/**
*类构造函数。
*
*@param-ball设置球值。
*球必须是下列之一:球。足球,球。棒球,
*球,足球。
*/
公共球(内球){
挫折球;
}//端构造函数
公共int getBall(){
回球;
}//结束getBall()
公众球(界内球){
开关(球){
案例1:
这个球=棒球;
打破
案例2:
this.ball=ball.SOCCERBALL;
打破
违约:
这个球=足球;
打破
}//终端开关
}//(完)
}//末级球
编辑:
我为javadoc添加了doc注释,我想这正是您需要的。查看此链接:它不会强制其他开发人员使用预定义的常量之一。它可以很好地编译,只会在运行时失败。然后,用户将发现开发人员在应该键入“FootBall”时键入了“FootBall”。最好在编译时找到这些东西。编译器(与用户不同)不会对所有人说你的坏话。因此,让它尽可能多地发现你的错误。它不会真正迫使其他开发人员使用预定义的常量之一。它可以很好地编译,只会在运行时失败。然后,用户将发现开发人员在应该键入“FootBall”时键入了“FootBall”。最好在编译时找到这些东西。编译器(与用户不同)不会对所有人说你的坏话。因此,让它尽可能多地发现您的错误。假设后续开发人员(SD)开始在一些足球比赛中使用3。没有问题,直到你(U)需要将高尔夫添加到列表中。SD认为是U添加了新的球类型导致了问题。你认为SD是使用非标准id造成问题的。谁说得对?如果SD读过javadocs,那么SD应该知道得更好,应该只传递一个静态值,比如Ball.FOOTBALL.enum比常量更干净、更强大,我想不出一个不使用它们的理由,是吗,我可以想出几个不使用enum的原因。例如:枚举不能扩展