java - 如何做到这一点,不会在 Enum.valuesOf() 中引发异常?
问题描述
我有从 dtoBookSpecBuider
创建JPA 规范的类。
BookSpecBuider类:
public class BookSpecBuilder {
public Specification<Book> getSpec(BookSearchDto bookSearchDto) {
return (root, query, builder) -> {
List<Predicate> predicates = new ArrayList<>();
if (bookSearchDto.getGenre() != null) {
predicates.add(root.get("genre").in(bookSearchDto.getGenre()));
}
// another conditions
流派 是枚举类,所以我在BookSearchDto中遇到了问题,流派是字符串,并且映射有问题。
我在我的if-block中更改它:
predicates.add(root.get("genre").in(Genre.valueOf(bookSearchDto.getGenre())));
但是现在我遇到了异常问题,如果我得到类型字符串,我的枚举没有。避免此问题的最佳方法是什么?
解决方案
我建议创建另一个名为Unknown
(或任何名称)的枚举条目,并在您的 Genre 枚举中创建一个新的静态方法调用.of()
(或您喜欢的任何名称),
enum Genre {
public static Genre of(String genre) {
for(Genre g : values()) {
if (g.name().equalsIgnoreCase(genre)) {
return g;
}
}
return Unknown;
}
}
那么这将避免不必要的异常。
推荐阅读
- php - 如何在 PHP 中将新记录添加到多维数组中?
- python - 从 Pandas 绘制某些数据点
- css - 填充网格容器,以便始终填充最后一个网格项区域
- javascript - Jquery 拖放项目计数和 Ajax 发布更新
- laravel - Laravel 工厂/播种机创建指定的双重记录
- javascript - Passport User Session not being detected (Angular) on a route
- python - 如何使用功能 API 在 Keras 中调用自定义层
- apache-nifi - 在 NIFI 中如何在没有 CSV 标头的情况下从 CSV 转换为 JSON
- sql - 查询具有多级数据的表
- python - 在 Django 中正确设计以根据用户类型处理表单和视图