java.lang.Enum.ordinal() 方法返回枚举常量的序数(它在枚举声明,其中初始常量分配的零序位)。
例如:
public void convertQueryBuilder(BoolQueryBuilder rootQueryBuilder, QueryBuilder childQueryBuilder) {
switch (SearchOption.SearchLogic.valueOf("must").ordinal()) {
case 1:
rootQueryBuilder.should(childQueryBuilder);
break;
case 2:
rootQueryBuilder.must(childQueryBuilder);
break;
case 3:
rootQueryBuilder.mustNot(childQueryBuilder);
break;
default:
throw new RuntimeException("");
}
}
使用了ordinal方法后,永远都会抛异常 throw new RuntimeException("");
这是外包写的项目,找了两天才找到这个错误,一直以为是ES这块的问题,各种高配置,都有不想干的心态了,加油吧
本文揭示了一个关于Java Enum.ordinal()方法的常见误解。在枚举类型中使用ordinal()来实现switch语句可能导致逻辑错误,因为ordinal()返回的是枚举常量在声明中的位置,这可能与业务逻辑不一致。
1433

被折叠的 条评论
为什么被折叠?



