Guava可选String或带前缀

时间:2014-09-28 08:55:45

标签: java guava code-cleanup

我有以下示例代码

public String getAliasSQL() {
    StringBuilder builder = new StringBuilder();
    if (field.getAlias().isPresent()) {
        builder.append(" AS ");
        builder.append(field.getAlias().get());
    }
    return builder.toString();
}

@Override
public Optional<String> getAlias() {
    return field.getAlias();
}

我想知道是否可以使用guava或()方法或其他简单技巧使用单行语句来执行此操作。

这样的东西
public String getAliasSQL() {
    return field.getAlias().or("").prefixIfNotEmpty(" AS ");
}

但是以更易读的方式,它仍然是干净的代码。

1 个答案:

答案 0 :(得分:3)

field.getAlias().transform(new Function(String, String) {
    @Override
    public String apply(String alias) {
        return " AS " + alias;
    }
}).or(""); 

这当然很冗长,但这是由Java 8之前缺少lambda引起的。对于Java 8,它变成了

field.getAlias().transform(alias -> " AS " + alias).or("");