Jea*_*lea 29 java parameters methods enums
我有一个方法可以说:
private static String drawCellValue(
int maxCellLength, String cellValue, String align) { }
Run Code Online (Sandbox Code Playgroud)
你可以注意到,我有一个名为align的参数.在这个方法里面,我将对if值是'left'还是'right'有一些if条件.将参数设置为String,显然我可以传递任何字符串值..我想知道它是否可能将Enum值作为方法参数,如果是,如何?
以防有人想到这个; 我想过使用布尔值,但我真的不喜欢它.首先,如何将真/假与左/右相关联?(好吧,我可以使用注释但我仍然觉得它很脏)其次,我可能会决定添加一个新值,比如'justify',所以如果我有两个以上的可能值,那么绝对不能使用布尔类型.
有任何想法吗?
Car*_*rra 59
这应该这样做:
private enum Alignment { LEFT, RIGHT };
String drawCellValue (int maxCellLength, String cellValue, Alignment align){
if (align == Alignment.LEFT)
{
//Process it...
}
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*ald 21
甚至更酷的枚举你可以使用开关:
switch (align) {
case LEFT: {
// do stuff
break;
}
case RIGHT: {
// do stuff
break;
}
default: { //added TOP_RIGHT but forgot about it?
throw new IllegalArgumentException("Can't yet handle " + align);
}
}
Run Code Online (Sandbox Code Playgroud)
枚举很酷,因为异常的输出将是枚举值的名称,而不是某个任意的int值.
我更喜欢这个。减少if/switch,就做。
private enum Alignment { LEFT, RIGHT;
void process() {
//Process it...
}
};
String drawCellValue (int maxCellLength, String cellValue, Alignment align){
align.process();
}
Run Code Online (Sandbox Code Playgroud)
当然,它可以是:
String process(...) {
//Process it...
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
98490 次 |
最近记录: |