您的位置 首页 java

Java 需要方法级联操作符吗?

Dart 语言中有一个级联操作符,也就是两个句点(..),可以使用单个对象来级联调用多个方法。

比如,下面的代码多次调用 myTokenTable 的 add 方法,需要重复使用 myTokenTable 对象。

 myTokenTable.add("aToken");
myTokenTable.add("anotherToken");
// many lines elided here
// and here 
// and on and on
myTokenTable.add("theUmpteenthToken");  

在使用级联操作符之后,可以简化成下面这样的写法。用(..)替换了 myTokenTable 的重复使用。

 myTokenTable
  ..add("aToken");
  ..add("anotherToken");
// many lines elided here
// and here 
// and on and on
  ..add("theUmpteenthToken");  

看到这里,熟悉的人一眼就看出来了,这是标准的构建器(Builder)模式的应用。只需要每一个方法返回当前的对象自身,就可以很方便地级联起来。Lombok 的注解 @Builder 可以自动生成这样的代码。

 TokenTable add(String token) {
  return this;
}  

但是有一个限制条件,那就是你必须能够修改这些代码。如果是第三方库中的对象,或者有其他限制导致不能返回当前对象,这种做法就不能生效了。

个人觉得这样的级联操作符还是有价值的。如果能够增加一个 null 安全的访问操作符 就更好了。类似 (?.) 这样的。只有当对象不为 null 的时候,才执行后面的代码。这样可以避免很多不必要的空指针异常。

Kotlin 已经实现了类似的功能,虽然不是通过操作符来完成的。但可以为方法调用设置一个隐式的上下文对象。

 val myObject = Address().apply {
    setRecipient("Joe Smith")
    addLine("123 Fake Street")
    setCity("Fakeville")
    setCountry("Fakamy")
    setZipcode("123456")
}  

希望级联操作符和 null 安全的访问操作符有一天能进入到 Java 中。

文章来源:智云一二三科技

文章标题:Java 需要方法级联操作符吗?

文章地址:https://www.zhihuclub.com/196906.shtml

关于作者: 智云科技

热门文章

网站地图