【问题标题】:Set property only if is not null [duplicate]仅当不为空时才设置属性 [重复]
【发布时间】:2016-08-29 22:31:20
【问题描述】:

我有一些输入数据,我必须使用这些数据来设置 POJO 的所有属性。 POJO 可能已部分设置。我的问题是仅当相关输入数据不为空时才设置属性。 我知道我可以通过两种方式做到这一点:

if (input != null) {
    obj.setData(input);
}

obj.setData(input != null ? input : obj.getData());

我正在为具有大量要设置的属性的对象寻找一种不那么丑陋和更好的解决方案。

【问题讨论】:

  • 好吧,为了检查 null 你必须检查 null :-)
  • 我在发帖前搜索了类似的问题,但我没有找到这个。也许是不同的。我的问题是不要用空值覆盖 pojo 中的现有数据。因为我对java的经验并不长(我在一年零几个月前开始使用它),我希望有更好的方法来做到这一点。

标签: java


【解决方案1】:

你也可以使用java8Optional

obj.setData(Optional.ofNullable(input).orElse(obj.getData()));

或者甚至使用更优雅的方式:

Optional.ofNullable(input).ifPresent(obj::setData);

【讨论】:

  • 谢谢,但我不能使用 java 8。我必须使用 java 7。
  • 对我来说,在这种情况下,空值检查必须在 setter 内部。
  • 在 Java 7 中,您可以使用来自 Guava 的 Optional
【解决方案2】:

使用番石榴:

String someString = "value";
Optional.fromNullable(someString).or("defaultValue");

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 2021-02-25
    • 2016-02-29
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多