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

  • 时间:
  • 浏览:10

对!不多不多没法 简单,Java似乎可不还要无缝操纵Scala语言中定义的类,在trait那一节中朋友提到,其他trait中完整性是抽象成员,则它与java中的interface是等同的,这事先java可不还要把它当作接口来使用,但其他trait中定义了具体成员,则它有着我其他人的内部内部结构实现,此时在java中使用的事先还要作相应的调整。朋友先看下trait中完整性是抽象成员的清况 ,之类:

前面朋友使用的是隐式转换,朋友还可不还要显式地进行转换,之类:

Scala可不还要直接调用Java实现的任何类,假使 符合scala语法就可不还要,不过其他法律法律依据 在JAVA类中不存在,但在scala中却存在操作更简便的法律法律依据 ,之类集合的foreach法律法律依据 ,在java中是不存在的,但朋友想用句子为啥办呢?这事先可不还要通过隐式转换来实现,scala其他为朋友考虑到实际应用场景了,之类:

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

Java中的异常处里具有如下形式:

添加公众微信号,可不还要了解更多最新Spark、Scala相关技术资讯

这些 法律法律依据 进行法律法律依据 的实现,即MySQLDAO$class是个抽象类,该抽象类蕴藏有了MySQLDAO中实现的法律法律依据 。也即

Java可不还要直接操作纵Scala类,如同Scala直接使用Java中的类一样,之类:

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

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

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

这些 清况 应该是跟实际清况 稳合的,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中声明的异常,代码如下:

但确实并还要没法 的,经我其他人查阅相关资料发现,其他是scala版本原因原因的,这篇文献中提到的跟实际清况 应该是稳合的http://www.importnew.com/6188.html

这篇文章中给出了下面没法 一个 trait的定义:

Java中的泛型可不还要直接转添加Scala中的泛型,在前面的课程中朋友其他有所涉及,之类Java中的Comparator<T> 可不还要直接转添加 Scala中的Comparator[T] 使用法律法律依据 完整性一样,不同的不多不多语法上的。下列代码给出了其使用法律法律依据 :

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

通过本节,朋友基本能掌握Scala与Java的互操作,当然这顶端还有不多不多内容没法 涉及,但在日常开发工作当中,掌握本节讲的内容便可不还要应付绝大多数互操作问题图片。

那其他Trait中包括了具体的成员,此时又该为啥使用呢?此时还要作特殊处里,代码如下:

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

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

没法 在Intellij IDEA中要能正确使用,从这点上也说明了Intellij IDEA在编写scala任务管理器运行运行时更贴近实际。

通过上述代码,朋友其他十分清楚了Scala中的泛型如保与Java中的泛型进行互操作了,但还一个 问题图片值得去考虑,那不多不多Java中的通配符的泛型如保与Scala中的泛型进行操作呢?之类:

此时假使 引入scala.collection.JavaConversions._包就可不还要了,它会朋友自动地进行隐式转换,从而可不还要使用scala中的其他非常方便的高阶函数,如foreach法律法律依据 ,代码如下: