盛兴彩票-Java,Scala,Groovy,Clojure和Kotlin之间的最

无论您是使用Java,Scala还是任何其他JVM语言进行开发,盛兴都无法从其他JVM语言中了解到新东西。一种语言中某些最“基本”的元素可能会从另一种语言中遗漏。

这就是为什么我们决定创建一个小愿望清单,其中包括一些众所周知的JVM语言的一些我们最喜欢的功能:Groovy,Scala,Clojure,Kotlin,当然还有Java。找出你(可能)错过的内容,以及即将到来的编译器。我们走吧。

Java中最具争议的事情之一是Checked Exceptions,这导致它成为少数几种使用它们的语言之一。检查异常在编译期间被强制执行,并且需要处理某种类型。这意味着它们必须在抛出它们的方法中被捕获或声明。

虽然有些开发人员更喜欢忽略Checked Exceptions,但他们可以通过强制您处理可能抛出的异常来改善您的代码。当然,他们可能不是流行的选择,你可以争论为什么不使用它们,但是在写之前他们会帮助你思考。

我们不需要没有检查的例外

虽然Java全部用于Checked Exceptions,盛兴但其他语言可能并不适合它。事实上,Kotlin,Clojure,Groovy和Scala不支持Checked Exceptions。

我们知道你在想什么 - 我们选择了猫王操作员只是因为它的凹槽,但这只是部分原因。我们选择它是因为它也是处理默认值的非常方便的方式,并且有助于降低重构时出现错误的风险。它通过消除重复在条件和正返回值中测试的表达式来提供Null安全性。

二元运算符返回true的第一个操作数,否则返回第二个操作数。Elvis运算符是三元运算符的缩写(也可在Java上使用),它本身是将if / else分支分配给变量的快捷表达式。困惑?我们通过一些Groovy代码来解释它:

 

  //三元运算符 - 在Java上运行相同
  def ternaryOutput =(sampleText != nullsampleText ' Hello Groovy!
   
  //猫王操作员在行动。我们必须阅读:'如果sampleText不是null赋值
  // sampleText到elvisOuput,否则分配'Viva Las Vegas!' 到elvisOutput。
   
  def elvisOutput = sampleText ?: ' Viva Las Vegas!

 

Kotlin还在可空引用中使用了Elvis运算符来实现null安全性,并且必须使用“?”参数来定义该值可以为null。如果运算符左边的表达式不为null,则Elvis会将其返回。否则,它会将该表达式返回给运算符的右侧。这一切都转化为一条简单的线条,如下所示:

 

  val l = b ?。长度?: - 1

 

Java没有Elvis算子,但是它对Null安全采取了类似的方法,所以当空值打击时你必须做好准备。你可以通过对使用monadic方法来做到这一点,它是一个容器对象,可以包含或不包含非空值。所以如果存在一个值,isPresent()将返回true,get()将返回该值。

Scala与运算符有相同的方法它是给定类型的零个或一个元素的容器。盛兴如果缺少一个值,您将收到Some [T]和None值。

Scala的类型推断机制让我们删除了一些注释,并且仍然得到了我们正在寻找的相同结果。它允许我们声明变量而不必指定关联的类型。

这使得写下面几行代码成为可能:

 

  var randomVar = 6 ;
  val randomVal = 我应该在这里写什么? ;

 

randomVar会知道它是一个Int,并且randomVal会知道它拥有一个String值,而我们不必定义它。这也得到了Kotlin的支持。

在Kotlin中,即使Kotlin是强类型的,您也不需要明确指定每个变量的类型。您可以选择显式定义数据类型,例如:

 

   

关于Java有很多不同的观点,但是我们大多数人共同认为语言是冗长的。这就是为什么Oracle转向社区,并问他们对Java中实现本地变量类型推断的感受盛兴。这里并不令人意外都是为了改变。

至于是否以及何时将在未来版本的Java中引入,目前还不得而知

Clojure,Groovy,Kotlin和Scala有什么共同之处?Read-Eval-Print-Loop或REPLs。这是一个命令行工具,它允许自行运行语句,而无需将它们包装在类或方法中。当需要立即反馈时,它非常方便,而不必编辑,编译和运行代码。

好消息是,这个方便的功能将作为langtools软件包的一部分在Java 9中提供。这个特性沿途有很多名字,从Kulla项目到最后是JShell。

该工具将允许您评估声明,语句和表达式。它还能够快速为代码段创建原型,因为JShell会不断读取用户输入,评估输入并打印输入值或输入引起的状态描述。

我们已经试用了JShell和Java 9的早期版本,盛兴您可以阅读我们的经验

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.gdjxjy.com.cn/a/shengxingcaipiao/186.html