java - Guava 可选字符串或带前缀

标签 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 or() 方法或其他简单技巧通过一行语句来完成此操作。

类似

public String getAliasSQL() {
    return field.getAlias().or("").prefixIfNotEmpty(" AS ");
}

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

最佳答案

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("");

关于java - Guava 可选字符串或带前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083251/

相关文章:

java - 使用 OWL API 4.0.x 时出现 NoSuchMethodError

java - Guava 和 Weblogic :ClassNotFoundException

ruby - 如何在 rspec 示例中删除全局日志记录功能

java - Guava 上的 ClassNotFoundException

java - -Info 类名后缀的替代方法

python - 处理用于实例化类的参数组合的大多数 pythonic 方式?

java - Deeplearning4j应该如何对数据进行标准化

java - 用 Java 完成关系型、持久性、SQL 类型数据库的最简单方法

java - 如何跨微服务拥有通用的 DTO 或实体

java - 为什么我可以为我的 Spring 项目运行 JUnit 测试,而不是 main 方法?