我们都知道data class的用法,这里就不多累赘了。

在 Kotlin 中,不需要自己动手去写一个 JavaBean,可以直接使用 DataClass,使用 DataClass 编译器会默默地帮我们生成以下函数

equals()
hashCode()
toString()
componentN()
copy()

data class 中的坑:

由于 data class 被编译器生成 JavaBean 时,是一个 final 类,并且没有无参的构造函数,所以在使用过程非常不方便,但是我们可以利用官方给出的插件来解决这些问题(noargallopen

1、添加依赖

buildscript {dependencies {classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"}
}

2、将依赖应用到项目中

apply plugin: 'kotlin-noarg'
apply plugin: 'kotlin-allopen'

3、创建一个 annotation

package mm.learn.kotlin._001_class.annotations;annotation class NoArgOpenDataClass

4、添加配置

noArg{annotation("mm.learn.kotlin._001_class.annotations.NoArgOpenDataClass")
}allOpen{annotation("mm.learn.kotlin._001_class.annotations.NoArgOpenDataClass")
}

5、将注解用到 data class 中

@NoArgOpenDataClass
data class Student(var id: Int, var name: String, var continent: String)

6、经过上面5个步骤,编译器就会帮我去掉 final 关键字,并且生成一个无参的构造方法,但是由于是在编译器做的操作,所以在源代码中还是无法直接使用无参的构造函数,只能通过反射来使用。

kotlin data class 遇到的坑相关推荐

  1. Android Gson在Kotlin data class中的使用

    文章目录 Android Gson在Kotlin data class中的使用 基本使用 NEP 空指针异常问题 空指针异常产生的原因 空安全失效问题 字段全有默认值 字段部分有默认值 解决问题 使用 ...

  2. android meta data值获取的坑

    2019独角兽企业重金招聘Python工程师标准>>> 获取meta data的时候,正常的非纯数字的字符串,设置在value里面,用getString获取是正常的. 但是如果含有纯 ...

  3. Kotlin常见知识点和踩坑指南

    1.Kotlin支持View binding 当我们需要使用Kotlin的View binding特性时,需要进行如下操作: 在app目录下的build.gradle里面添加: apply plugi ...

  4. hive load data inpath ‘‘ overwrite into 坑

    load data inpath 'dataDir/dim_url.csv' overwrite into table dim_url partition(day='2021-03') 注意: 1,以 ...

  5. Android避坑指南,Gson与Kotlin碰撞出一个不安全的操作

    本文已经授权「鸿洋」公众号原创首发. 最近发现微信多了个专辑功能,可以把一系列的原创文章聚合,刚好我每周都会遇到很多同学问我各种各样的问题,部分问题还是比较有意义的,我会在周末详细的写demo验证,简 ...

  6. Android Kotlin Gson解析踩坑记录

    一.背景 一般我们在进行网络请求拿到返回结果之后,我们期望能够转化成对应的Java实体类,在这个转化过程中,可以使用自动解析的方式,也可以使用三方提供的工具类,比如Gson.FastJson等. 针对 ...

  7. vue更新data无效,页面data没刷新 vue.set

    Vue中组件的data是有很多坑的,先普及一下常识: 1.想使用data,必须先在data中创建.(如果不创建就会报错)示例: <div class="">{{user ...

  8. 《From Java To Kotlin》-Kotlin与Java的简单对比

    前言: 原文来自https://github.com/MindorksOpenSource/from-java-to-kotlin 本文也只是简单比较kotlin与java的不同之处,实际学习kotl ...

  9. Java之于Kotlin对比(Android)

    前言 通过一段时间对Kotlin的使用,总结一下Android版kotlin各种语法的写法 顺便发几个常用工具类的写法,希望大家指正 正文 ######1. Thread Java写法 new Thr ...

最新文章

  1. spring 事件监听
  2. 【Linux 内核 内存管理】内存管理架构 ① ( 内存管理架构组成 | 用户空间 | 内核空间 | MMU 硬件 | Linux 内核架构层次 | Linux 系统调用接口 )
  3. 2020上海学区房楼市,到底发生了什么?
  4. 浅析 record 使用场景
  5. 阿里云ECS服务器连接不上3306端口?
  6. oracle 12 if,Oracle 12.1 RAC 系列 – 配置第二个网络和相应的SCAN2
  7. 获取会话的连接和断开事件
  8. 项目管理方面的几个.NET开源项目
  9. 类的加载过程详解之过程三:Initialization(初始化)阶段
  10. 利用pl/sql读文件(简单)
  11. 社会经济学中的因果分析思想初探
  12. SCI期刊图片分辨率与清晰度修改,以及拼图
  13. GridView 控制默认分页页码间距 及字体大小
  14. Android不同屏幕适配的大神解决方案(转)
  15. mysql数据库数据恢复
  16. 单片机学习记录一:c8t6原理图
  17. 数据结构习题集之魔王语言解释
  18. Oracle OCP考试经验总结与心得体会
  19. SAP MM部分常用增强-ME21N-MIGO-MB1A
  20. 第一场web3的游戏直播带领我走向直播的另一高点

热门文章

  1. 学习 HTTP Referer
  2. 手机在泰国显示无服务器,怎么连接泰国服务器
  3. vs2015安装使用体验
  4. upupoo视频使用Java代码下载
  5. 集合语音识别、音频蓝牙、对话控制多功能一体的WTK6900H-32N眼部按摩器应用设计方案
  6. karabiner改键教程
  7. core网络课程整理(core概述及启动讲解)
  8. 花书 第十九章 第二十章
  9. mongodb数据同步到elasticsearch的中间件,支持全量,增量,实时同步等多种同步情景。(syncs MongoDB to Elasticsearch in realtime) (Mong
  10. 升级计算机的图形卡和驱动程序,驱动程序向导如何更新图形卡驱动程序?更新图形驱动程序方法说明...