相关疑难解决方法(0)

Java 8 getter应该返回可选类型吗?

Optional Java 8中引入的类型对于许多开发人员来说是一件新事物.

一个getter方法返回Optional<Foo>类型代替经典的Foo一个好习惯吗?假设值可以null.

java nullable optional java-8

267
推荐指数
4
解决办法
5万
查看次数

龙目岛可选

我有一个类Address看起来像这样:

@Value
class Address {

   @NotNull String userId;
   @NotNull String line1;
   String line2;

   private Address(Builder b) {
      // copy everything from builder
   }

   // override getter for line2 so that it returns Optional<String>
   public Optional<String> getLine2() {
      return Optional.ofNullable(this.line2);
   }

   // and a Builder
   public static class Builder {
     // builder methods
   }
}
Run Code Online (Sandbox Code Playgroud)

在这里我被迫写Builder了一个Getter因为,如果我想在使用Lombok时返回一个Optional,我必须声明line2Optional<String>.这将生成一个接受的构建器方法Optional<String>!

还有其他方法可以使用lombok Optional吗?

java optional lombok

36
推荐指数
1
解决办法
1万
查看次数

何时使用Option

我学习Scala已有一段时间了,无法清楚地了解Option的用法.当我链接函数时,它可以帮助我避免空值检查(根据文档).这对我来说很清楚:)

接下来我看到Option可以作为开发人员的一种指示器,这里可以使用null值,并且必须对其进行处理.这是真的吗?如果是,我应该使用选项吗?例如

class Racer {
    val car = new Car()
}
Run Code Online (Sandbox Code Playgroud)

我有Racer类,我确定car field不能为null(因为它是常量并在创建Racer实例时得到一个值).这里不需要选项.

class Racer {
    var car = new Car()
}
Run Code Online (Sandbox Code Playgroud)

在这里,我这样做,以便汽车可以改变.并且有人可以为汽车分配零.我应该在这里使用Option吗?如果是,我注意到我所有的班级字段都是Option的候选者.我的代码看起来像这样

class Racer {
    var car: Option[Car] = None
    var currentRace: Option[Race] = None
    var team: Option[Team] = None
    ...
}
Run Code Online (Sandbox Code Playgroud)

它看起来不错吗?对我来说,似乎有点过度使用.

def foo(): Result = {
    if( something )
        new Result()
    else
        null
}
Run Code Online (Sandbox Code Playgroud)

我有一个可以返回null的方法.我应该返回Option吗?如果方法可以返回null,我是否应该总是这样做?

任何有关它的想法都会有所帮助.提前致谢!

我的问题类似于为什么选项,但我认为它不一样.它更多的是关于何时,而不是为什么.:)

scala

26
推荐指数
4
解决办法
1万
查看次数

标签 统计

java ×2

optional ×2

java-8 ×1

lombok ×1

nullable ×1

scala ×1