kotlin data class 遇到的坑
我们都知道data class的用法,这里就不多累赘了。
在 Kotlin 中,不需要自己动手去写一个 JavaBean,可以直接使用 DataClass,使用 DataClass 编译器会默默地帮我们生成以下函数
equals()
hashCode()
toString()
componentN()
copy()
data class 中的坑:
由于 data class 被编译器生成 JavaBean 时,是一个 final 类,并且没有无参的构造函数,所以在使用过程非常不方便,但是我们可以利用官方给出的插件来解决这些问题(noarg
、allopen
)
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 遇到的坑相关推荐
- Android Gson在Kotlin data class中的使用
文章目录 Android Gson在Kotlin data class中的使用 基本使用 NEP 空指针异常问题 空指针异常产生的原因 空安全失效问题 字段全有默认值 字段部分有默认值 解决问题 使用 ...
- android meta data值获取的坑
2019独角兽企业重金招聘Python工程师标准>>> 获取meta data的时候,正常的非纯数字的字符串,设置在value里面,用getString获取是正常的. 但是如果含有纯 ...
- Kotlin常见知识点和踩坑指南
1.Kotlin支持View binding 当我们需要使用Kotlin的View binding特性时,需要进行如下操作: 在app目录下的build.gradle里面添加: apply plugi ...
- hive load data inpath ‘‘ overwrite into 坑
load data inpath 'dataDir/dim_url.csv' overwrite into table dim_url partition(day='2021-03') 注意: 1,以 ...
- Android避坑指南,Gson与Kotlin碰撞出一个不安全的操作
本文已经授权「鸿洋」公众号原创首发. 最近发现微信多了个专辑功能,可以把一系列的原创文章聚合,刚好我每周都会遇到很多同学问我各种各样的问题,部分问题还是比较有意义的,我会在周末详细的写demo验证,简 ...
- Android Kotlin Gson解析踩坑记录
一.背景 一般我们在进行网络请求拿到返回结果之后,我们期望能够转化成对应的Java实体类,在这个转化过程中,可以使用自动解析的方式,也可以使用三方提供的工具类,比如Gson.FastJson等. 针对 ...
- vue更新data无效,页面data没刷新 vue.set
Vue中组件的data是有很多坑的,先普及一下常识: 1.想使用data,必须先在data中创建.(如果不创建就会报错)示例: <div class="">{{user ...
- 《From Java To Kotlin》-Kotlin与Java的简单对比
前言: 原文来自https://github.com/MindorksOpenSource/from-java-to-kotlin 本文也只是简单比较kotlin与java的不同之处,实际学习kotl ...
- Java之于Kotlin对比(Android)
前言 通过一段时间对Kotlin的使用,总结一下Android版kotlin各种语法的写法 顺便发几个常用工具类的写法,希望大家指正 正文 ######1. Thread Java写法 new Thr ...
最新文章
- spring 事件监听
- 【Linux 内核 内存管理】内存管理架构 ① ( 内存管理架构组成 | 用户空间 | 内核空间 | MMU 硬件 | Linux 内核架构层次 | Linux 系统调用接口 )
- 2020上海学区房楼市,到底发生了什么?
- 浅析 record 使用场景
- 阿里云ECS服务器连接不上3306端口?
- oracle 12 if,Oracle 12.1 RAC 系列 – 配置第二个网络和相应的SCAN2
- 获取会话的连接和断开事件
- 项目管理方面的几个.NET开源项目
- 类的加载过程详解之过程三:Initialization(初始化)阶段
- 利用pl/sql读文件(简单)
- 社会经济学中的因果分析思想初探
- SCI期刊图片分辨率与清晰度修改,以及拼图
- GridView 控制默认分页页码间距 及字体大小
- Android不同屏幕适配的大神解决方案(转)
- mysql数据库数据恢复
- 单片机学习记录一:c8t6原理图
- 数据结构习题集之魔王语言解释
- Oracle OCP考试经验总结与心得体会
- SAP MM部分常用增强-ME21N-MIGO-MB1A
- 第一场web3的游戏直播带领我走向直播的另一高点
热门文章
- 学习 HTTP Referer
- 手机在泰国显示无服务器,怎么连接泰国服务器
- vs2015安装使用体验
- upupoo视频使用Java代码下载
- 集合语音识别、音频蓝牙、对话控制多功能一体的WTK6900H-32N眼部按摩器应用设计方案
- karabiner改键教程
- core网络课程整理(core概述及启动讲解)
- 花书 第十九章 第二十章
- mongodb数据同步到elasticsearch的中间件,支持全量,增量,实时同步等多种同步情景。(syncs MongoDB to Elasticsearch in realtime) (Mong
- 升级计算机的图形卡和驱动程序,驱动程序向导如何更新图形卡驱动程序?更新图形驱动程序方法说明...