java - 如何使用其他DTO来减少Spring boot中的if语句

标签 java spring spring-boot

如何减少 spring-boot 中以下代码中 if 语句的数量。

该值是通过调用服务类中的函数在 DTO 中设置的。

public ResponseEntity<somedTO> fetchAlldata(@RequestParam(value="meta", required=false)
                                                    List<String> meta) {
    somedTO response = new somedTO();
    //Checks if param present else print complete service
    if (meta != null && !meta.isEmpty()) {
        if (meta.contains("A")) {
            response.setA(service.getA());
        }
        if (meta.contains("B")) {
            response.setB(service.getB());
        }
        if (meta.contains("C")) {
            response.setC(service.getC());
        }
        if (meta.contains("D")) {
            response.setD(service.getD());
        }
        if (meta.contains("E")) {
            response.setE(service.getE());
        }
        if (meta.contains("F")) {
            response.setF(service.getF());
        }
        if (meta.contains("G")) {
            response.setG(service.getG());
        }
    }
}

如何继续使用 DTO 或 Map 来减少 If 语句?

最佳答案

你可以这样写:

if (meta != null && !meta.isEmpty()) {
       meta.contains("A") ? response.setA(service.getA()) : 
meta.contains("environment") ? response.setB(service.getB()) : XXXXXXXXXXXXXXx;
}

关于java - 如何使用其他DTO来减少Spring boot中的if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51764604/

相关文章:

spring-boot - 为什么 Spring Boot 不使用 @Primary Jackson ObjectMapper 在 rest Controller 上进行 JSON 序列化?

java - Split 方法是将字符串拆分为单个字符串

java - 为什么我能够在 Java 中将更大的数组传递给更小的数组?

java - 实例化基类扩展时出现问题

java - Apache Camel RouteBuilder 配置方法

java - Spring aop事务不提交事务

java - 在 weblogic 中启用 Jersey 日志记录

java - 如何验证 REST 服务中的通用 bean?

java - 如何让 Spring Boot API 返回 MySQL 日期值的 UTC 时间而不是 "2018-08-01T04:00:00Z"?

java - 响应式 Spring Boot API 封装 Elasticsearch 的异步批量索引