【IT168 技术】本文将介绍局部变量类型推断(特别是对于jOOQ)是如何影响工作的。
在JDK 9成功发布之后,我们已经可以在JDK 10的早起访问版本中展望完整版了。目前针对JDK 10的JEP列表目是相当易于管理。对于大多数Java开发人员来说,JEP 286可能是最令人兴奋的:局部变量类型推断。
关于这个新功能的好处之一是,可以访问之前的不可指定类型。例如:
一个很少使用的功能是匿名类中的方法,它们不会覆盖或实现超类型的方法,只能在很少的范围内使用。在Java 10之前,只能使用以下语法在这样的类上调用m()或n():
语言功能并不是很有用。实例引用已经很快就会消失,只有一个方法可以从匿名类的“外部”调用。使用Java 10,可以将整个表达式分配给本地变量,而不会丢失匿名类型。
这对jOOQ意味着什么呢?
jOOQ有一些很实用的类型。情看以下这个API:
最终,根据SELECT语句中要投影的列数,将得到不同的Record [N] <T1,T2,...,T [N]>类型。
好消息是,有记录级的类型安全性,即有三列都是字符串类型的记录。坏消息是,为了从这种类型的安全中获益,必须费时费力的实际编写类型。
Java 10改变了这一点,现在可以简化为下图:
即使用关键字“var”(或“final var”)创建循环变量,依然是类型安全的。例如,不能调用r.value4():
这不仅对于jOOQ的结果有用,也可以使用它来创建动态SQL,例如:
显然,对于使用jOOQ人来说,这将是一个非常有用的的Java版本。