java 表中的运算符

bxjv4tth  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(112)

table有7行输出,我如何修改它,使第6行显示三个提供程序中的任何一个。
我试过这样的方法:

template.getProvider2() != null || template.getProvider3() != null ||
template.getProvider1() != null ? 
template.getProvider2().getBusinessUnit(): "" || 
template.getProvider3().getBusinessUnit(): "" || 
template.getProvider3().getBusinessUnit(): "",

这给了我一个StringBuilder不接受OR运算符的错误,我将感谢任何关于这方面的帮助。
谢谢
下面是我的代码:

public GetEmailTemplatesResponse getEmailTemplates() throws Exception {
        StringBuilder stringBuilder = new StringBuilder();
        String tableRow = "<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>";
        Map<String, EmailTemplate> templates = templateRedisCacheReader.getTemplatesByCacheType(CacheType.EMAIL_TEMPLATE);
        templates.values()
                .forEach(template -> stringBuilder.append(String.format(tableRow,
                        template.getTemplateId(),
                        template.getProvider1() != null ? template.getProvider1().getId() : "",
                        template.getProvider2() != null ? template.getProvider2().getId() : "",
                        template.getProvider3() != null ? template.getProvider3().getId() : "",
                        template.getEnv(),
                        template.getProvider2() != null ? template.getProvider2().getBusinessUnit(): "",  // <--
                        template.getPriority()))
                );

我尝试检查是否所有提供程序都为空,如果其中一个不为空,则显示该提供程序的业务单位

ego6inou

ego6inou1#

在SQL中有一个常用的函数,它返回第一个非空参数,称为“coalesce”,你可以编写一个与之等价的Java。

Object coalesce(Object... objects) {
    for (Object obj : objects) {
        if(obj != null) return obj;
    }
    return null;
}
... 
Provider firstNonNullTemplate=(Provider) coalesce(template.getProvider1(), template.getProvider2(), template.getProvider3());

相关问题