北京javaEE培训 如何让Kotlin类对Java EE友好

栏目:Java培训丨时间:07-03丨来源:未知丨作者:光环IT学院
  北京javaEE培训哪家好?javaEE培训就选光环it学院!光环it学院,光环老师坚持“教学为本”的方针;坚持“用良心做教育”的理念。全心全力帮助每一位学生。秉承对学生负责的基本原则,光环多年来坚持面对面教学,传授真正实用的技能知识。

北京javaEE培训
 
  JavaEE和Kotlin并不是真正的朋友,除非你撮合它们。幸好所有这些问题都可以避免。

  我们的转换目标是一个简单的JavaWAR,它可以通过REST接口从数据库中存储和检索记录。从GitHub拉取fables-kotlin仓库开始吧。这个项目在jee/java目录下。如果想运行它并进行测试,请查看GitHub上的说明。

  让Kotlin类对JavaEE友好

  JavaEE服务器对类的构造方式非常挑剔。它们大多数必须是非final,而且拥有一个无参数的构造函数,以及公有方法。无参数构造函数用于实例化,而另外两个需求用于生成代理。代理会拦截对象的调用并丰富它们的附加功能。如果写的是Java代码,不需要考虑太多,但写Kotlin代码会有点不一样。

  在Build脚本中加入Kotlin

  在开始转换之前,将Kotlin编译器添加到build脚本中。

  我们必须注册Kotlin编译器插件,将其应用到模块,并添加一些依赖项。Kotlin标准库并不是强制要求使用的,它虽然小型,却提供了大量有用的功能。

  简单的开始:RestApplication类

  IntelliJ内置支持将Java类转换为Kotlin。这很容易使用:你可以打开一个Java类然后按下[CTRL]+[ALT]+[SHIFT]+K,或者拷贝一段Java文件中的代码并在Kotlin文件中粘贴。两种方式都会自动转换代码。下面把这个组合键称为[Kotlin]。

  打开RestApplication.java类,按下[Kotlin]。完成。

  转换后的代码正常工作,但它仍然是Java风格的代码,只是用了不同的语言。通过不可变的Kotlinset并把getClasses变成一个真正的函数来代替复杂的JavaHashSet初始化过程——这样做:

  转换接口

  按下[Kotlin]然后继续。

  转换简单的不可变类

  下一步,我们将转换fables.kotlin.jee.java.rest.KittenRest.java类。注意这个类只有一个构造函数,其中包含所有属性的赋值,没有setters。这个类用于在REST中传输数据,所以它被写成不可变的。如果这个类拥有一个无参数构造函数并含有setters,框架就能对它进行实例化并用setters填充数据。这种情况下,框架必须使用无参数构造函数。因为Java构造函数不提供参数名称,因此自动绑定是不可能实现的。这就是为什么需要@JsonProperty注解。参数名元数据在Java8中可以通过一个特殊的编译参数提供,但默认情况下没有这个特性。

  按下[Kotlin],IDEA会帮你把类转换成Kotlin代码。很神奇,类的内容不见了。

  JPA实体类

  热身过后,我们来尝试更有趣的事情:JPA实体类。这是很典型的,拥有很长的setters和getters、巨大的equals,hashCode,和toString的类。下面会用一个简短的摘要来提醒你它有多臃肿。

  这里我们有第一个进行真正改进的机会。再使用一次[Kotlin]。现在声明它是一个数据类(dataclass)。将主构造函数声明为私有的,放入所有字段的声明,删除默认的东西并添加override。删除所有的方法(但要保留构造函数)。让次构造函数调用主构造函数。

  北京javaEE培训哪家好?javaEE培训就选光环it学院!

  原创文章,转载请注明出处:光环it学院

光环IT学院,专注IT培训16年,培养IT行业精英! —

光环IT学院

注:本站文章采用原创+网络转载两个方式,对于转载的文章,由于网络信息过多,无法100%找到原始出处。如果本站文章有侵犯了您的权益,请联系我们删除或授权。

请遵守理性,宽容,换位思考的原则

2017-07-03 11:49 发布 丨 人浏览

热点推荐

微信
公众号

微信扫码,即可关注

反馈
意见
回到
顶部