Java:方法中的枚举参数

2022-09-01 10:10:06

我有一个方法,让我们说:

private static String drawCellValue(
    int maxCellLength, String cellValue, String align) { }

正如你所注意到的,我有一个名为reign的参数。在这种方法中,我将有一些关于值是“左”还是“右”的if条件。将参数设置为字符串,显然我可以传递任何字符串值。我想知道是否有可能将Enum值作为方法参数,如果是这样,如何?

以防万一有人想到这一点;我想过使用布尔值,但我并不喜欢它。首先,如何将真/假与左/右联系起来?(好吧,我可以使用注释,但我仍然觉得它很脏),其次,我可能会决定添加一个新值,比如“justify”,所以如果我有超过2个可能的值,布尔类型绝对不可能使用。

有什么想法吗?


答案 1

这应该这样做:

private enum Alignment { LEFT, RIGHT };    
String drawCellValue (int maxCellLength, String cellValue, Alignment align){
  if (align == Alignment.LEFT)
  {
    //Process it...
  }
}

答案 2

使用枚举更酷,您可以使用开关:

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);

   }
}

枚举很酷,因为异常的输出将是枚举值的名称,而不是某个任意的整数值。