我有一个方法可以说:
private static String drawCellValue( int maxCellLength, String cellValue, String align) { }
你可以注意到,我有一个名为align的参数.在这个方法里面,我将对if值是'left'还是'right'有一些if条件.将参数设置为String,显然我可以传递任何字符串值..我想知道它是否可能将Enum值作为方法参数,如果是,如何?
以防有人想到这个; 我想过使用布尔值,但我真的不喜欢它.首先,如何将真/假与左/右相关联?(好吧,我可以使用注释但我仍然觉得它很脏)其次,我可能会决定添加一个新值,比如'justify',所以如果我有两个以上的可能值,那么绝对不能使用布尔类型.
有任何想法吗?
这应该这样做:
private enum Alignment { LEFT, RIGHT }; String drawCellValue (int maxCellLength, String cellValue, Alignment align){ if (align == Alignment.LEFT) { //Process it... } }
甚至更酷的枚举你可以使用开关:
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); } }
枚举很酷,因为异常的输出将是枚举值的名称,而不是某个任意的int值.