经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » Gradle » 查看文章
Kotlin之在Gradle中无参(no-arg)编译器插件的使用详解
来源:jb51  时间:2019/11/11 8:33:03  对本文有异议

1、前言

最近在用Kotlin+Spring Boot写一个后端项目,实体类习惯性地用了Kotlin中的data class,但是Spring要求要有一个无参的构造函数,否则可能会抛出java.sql.SQLDataException。要使data class能够生成一个无参的构造函数,有两种方法可以做到:

1.给data class的构造函数中的每一个参数都赋上默认值。比如:

  1. data class User(
  2. @TableId(value = "id", type = IdType.AUTO)
  3. var id: Int?=-1,
  4. var userName: String?=null, //用户名
  5. var age: Int?=null, //年龄
  6. var password: String?=null, //密码
  7. var name: String?=null, //姓名
  8. var email: String?=null //邮箱
  9. ) : Serializable

2.使用无参编译器插件no-arg。下面我们就来看看这种方法。

2、具体步骤

2.1 添加插件依赖
首先需要在工程的build.gradle中添加no-arg插件的依赖,版本跟Kotlin的版本一致:

  1. plugins {
  2. ……
  3. id "org.jetbrains.kotlin.plugin.noarg" version "1.3.41"
  4. }

我用的是plugins的形式,如果你使用的是buildscript 块的话就可以这样添加:

  1. buildscript {
  2. dependencies {
  3. classpath "org.jetbrains.kotlin:kotlin-noarg:1.3.41"
  4. }
  5. }
  6.  
  7. apply plugin: "kotlin-noarg"
  8.  

2.2 指定无参注解列表

说实话,在看官方文档时这一步并不好理解,这里只描述我经过自己的实践之后得出的经验。首先创建一个注解类,类名我们可以定为NoArg:

  1. annotation class NoArg

然后最关键一步来了,回到工程的build.gradle文件,添加无参注解列表:

  1. noArg {
  2. annotation("com.lindroid.projectname.annotation.NoArg")
  3. }

annotation中的路径就是我们创建的NoArg注解类所在的包目录。路径一定要写好,不要出错!此时无参插件就已经配置好了。我们可以在data class前面添加@NoArg注解,这样编译器就能为其生成一个无参构造函数。使用示例如下:

  1. @NoArg
  2. data class User(
  3. @TableId(value = "id", type = IdType.AUTO)
  4. var id: Int?,
  5. var userName: String?, //用户名
  6. var age: Int?, //年龄
  7. var password: String?, //密码
  8. var name: String?, //姓名
  9. var email: String? //邮箱
  10. ) : Serializable

2.3 kotlin-jpa中的无参注解

如果你的项目中已经添加了kotlin-jpa插件,那么基本上就不必单独添加无参插件了。kotlin-jpa对无参插件做了包装,当你使用 @Entity、 @Embeddable 与 @MappedSuperclass这几个注解时,都会默认支持无参注解的。

3、参考文章

Kotlin官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号