Scala入门到精通——第二十八节 Scala与JAVA互操作

  • 时间:
  • 浏览:1

Scala中的异常出理 是通过模式匹配来实现的,代码如下:

Java中的异常出理 具有如下形式:

用javap命令查看带具体成员方法 的trait MySQLDAO时,其代码是一样的

最终反编译后的代码应该具有以下形式:

值得注意的是在Scala IDE for Eclipse中这么 实现下列代码的调用

这么 在Intellij IDEA中可不可不能否 正确使用,从这点上也说明了Intellij IDEA在编写scala应用守护线程池池时更贴近实际。

它生成下面另一另二个字节码文件MyTrait.class、MyTrait$class

通过本节,大家基本能掌握Scala与Java的互操作,当然这中间还有越多有内容这么 涉及,但在日常开发工作当中,掌握本节讲的内容便可不可不能否 应付绝大多数互操作问提图片。

去掉 公众微信号,可不可不能否 了解更多最新Spark、Scala相关技术资讯

Java中的泛型可不可不能否 直接转去掉 Scala中的泛型,在前面的课程中大家不可能 有所涉及,类事Java中的Comparator<T> 可不可不能否 直接转去掉 Scala中的Comparator[T] 使用方法 完整版一样,不同的时候语法上的。下列代码给出了其使用方法 :

你这个方法 进行方法 的实现,即MySQLDAO$class是个抽象类,该抽象类中包含了MySQLDAO中实现的方法 。也即

通过上述代码,大家不可能 十分清楚了Scala中的泛型如何与Java中的泛型进行互操作了,但还有另一另二个问提图片值得去考虑,那时候Java中的通配符的泛型如何与Scala中的泛型进行操作呢?类事:

你这个状况应该是跟实际状况稳合的,trait MyTrait会自动生成另一另二个名为MyTrait的interface,MyTrait$class的抽象类。大家可不可不能否 看得人,该作者的scala版本是2.8.1,而大家的scala版本是2.10.4,至于为哪些总出 原来的因为,当事人暂时还这么 弄清楚,但可不可不能否 肯定的是,http://www.importnew.com/6188.html这篇文章讲的内容跟实际是稳合的,不可能 前面的MySQLDAOImpl仍然是实现MySQLDAO接口方法 定义的,但在重写delete方法 时采用的是

中间给的例子是Scala如何捕获Java中抛出的异常,下面的例子给出的是Java如何捕获Scala中声明的异常,代码如下:

那不可能 Trait中包括了具体的成员,此时又该为什么么使用呢?此需要要作特殊出理 ,代码如下:

前面大家使用的是隐式转换,大家还可不可不能否 显式地进行转换,类事:

但我觉得并有的是原来的,经当事人查阅相关资料发现,不可能 是scala版本因为因为的,这篇文献中提到的跟实际状况应该是稳合的http://www.importnew.com/6188.html

这篇文章中给出了下面原来另一另二个trait的定义:

此时我希望引入scala.collection.JavaConversions._包就可不可不能否 了,它会大家自动地进行隐式转换,从而可不可不能否 使用scala中的其他非常方便的高阶函数,如foreach方法 ,代码如下:

下面给出的是Scala集合与Java集合支持的转换操作(取自JavaConversions源码):

Java可不可不能否 直接操作纵Scala类,如同Scala直接使用Java中的类一样,类事:

下面的代码演示了Java是如何使用Scala中的泛型的:

Scala可不可不能否 直接调用Java实现的任何类,我希望符合scala语法就可不可不能否 ,不过其他方法 在JAVA类中不地处,但在scala中却地处操作更简便的方法 ,类事集合的foreach方法 ,在java中是不地处的,但大家想用语句为什么么办呢?这以前可不可不能否 通过隐式转换来实现,scala不可能 为大家考虑到实际应用场景了,类事:

对!时候这么 简单,Java似乎可不可不能否 无缝操纵Scala语言中定义的类,在trait那一节中大家提到,不可能 trait中完整版是抽象成员,则它与java中的interface是等同的,这以前java可不可不能否 把它当作接口来使用,但不可能 trait中定义了具体成员,则它有着当事人的内部实现,此时在java中使用的以前需要作相应的调整。大家先看下trait中完整版是抽象成员的状况,类事: