龙空技术网

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

成富 68

前言:

现时兄弟们对“java省市级联”大约比较着重,各位老铁们都需要分析一些“java省市级联”的相关文章。那么小编同时在网上网罗了一些对于“java省市级联””的相关内容,希望大家能喜欢,朋友们快快来了解一下吧!

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

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

myTokenTable.add("aToken");myTokenTable.add("anotherToken");// many lines elided here// and here // and on and onmyTokenTable.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省市级联