Skip to content

Commit 93b3dd2

Browse files
committed
update README
1 parent c60c196 commit 93b3dd2

2 files changed

Lines changed: 8 additions & 4 deletions

File tree

KotlinCourse/1.Kotlin_简介&变量&类&接口.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@ data class Artist(
700700
- `hashCode()`
701701
- `copy()`
702702
- `toString()`
703-
- 一系列可以映射对象到变量中的函数(后面再说)。
703+
- `componentN()`
704704

705705
如果我们使用不可修改的对象,就像我们之前讲过的,假如我们需要修改这个对象状态,必须要创建一个新的一个或者多个属性被修改的实例。
706706
这个任务是非常重复且不简洁的。
@@ -724,7 +724,7 @@ val charon2 = charon.copy(age = 19)
724724
- 数据类必须拥有一个构造方法,该方法至少包含一个参数,一个没有数据的数据类是没有任何用处的。
725725
- 与普通的类不同,数据类构造方法的参数强制使用var或者val进行声明
726726
- data class之前不能用abstract、open、sealed或者inner进行修饰
727-
- 在Kotlin 1.1版本前数据类只允许实现接口,之后的版本既可以实现接口也可以继承类
727+
- 在Kotlin 1.1版本前数据类只允许实现接口,之后的版本既可以实现接口也可以继承类,更多可看[Feedback Request: Limitations on Data Classes](https://blog.jetbrains.com/kotlin/2015/09/feedback-request-limitations-on-data-classes/)
728728

729729

730730

@@ -753,6 +753,10 @@ name = PersonData, age = 20
753753
var name = f1.component1()
754754
var age = f1.component2()
755755
```
756+
数据类的缺点,数据类虽然使用的时候很简单,但是因为它会默认帮我们自动生成很多代码,里面的有些代码其实在某些情况下我们并不需要,例如copy、component等,
757+
如果在项目中使用了大量的数据类,那就会引起包大小增加的问题。具体可见[Data classes in Kotlin: how do they impact application size](https://medium.com/bumble-tech/data-classes-in-kotlin-the-real-impact-of-using-it-6f1fdc909837)
758+
759+
虽然对于release包,使用了R8,ProGuard,DexGuard等优化器。这些可以删除未使用的方法,这意味着它们可以优化数据类。像componentN()、copy()如果没有使用的话,会默认给删除。但是对于toString()、equals()、hashCode()方法则不会删除。对于有些不需要toString()、equals()、hashCode()方法的类如果使用数据类就会导致多生成这些代码,所以在使用数据类的时候不要去为了简单而乱用,也要去想想是否需要这些方法?是否需要设计成数据类。
756760

757761
## 继承
758762

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ Android学习笔记
192192
- [Android启动模式详解][75]
193193
- [Android卸载反馈][76]
194194
- [ApplicationId vs PackageName][77]
195-
- [ART与Dalvik][78]
195+
- [AndroidRuntime_ART与Dalvik][78]
196196
- [BroadcastReceiver安全问题][79]
197197
- [Crash及ANR分析][80]
198198
- [Library项目中资源id使用case时报错][81]
@@ -389,7 +389,7 @@ Android学习笔记
389389
[75]: https://github.com/CharonChui/AndroidNote/blob/master/AdavancedPart/Android%E5%90%AF%E5%8A%A8%E6%A8%A1%E5%BC%8F%E8%AF%A6%E8%A7%A3.md "Android启动模式详解"
390390
[76]: https://github.com/CharonChui/AndroidNote/blob/master/AdavancedPart/Android%E5%8D%B8%E8%BD%BD%E5%8F%8D%E9%A6%88.md "Android卸载反馈"
391391
[77]: https://github.com/CharonChui/AndroidNote/blob/master/AdavancedPart/ApplicationId%20vs%20PackageName.md "ApplicationId vs PackageName"
392-
[78]: https://github.com/CharonChui/AndroidNote/blob/master/AdavancedPart/ART%E4%B8%8EDalvik.md "ART与Dalvik"
392+
[78]: https://github.com/CharonChui/AndroidNote/blob/master/AdavancedPart/AndroidRuntime_ART%E4%B8%8EDalvik.md "AndroidRuntime_ART与Dalvik"
393393
[79]: https://github.com/CharonChui/AndroidNote/blob/master/AdavancedPart/BroadcastReceiver%E5%AE%89%E5%85%A8%E9%97%AE%E9%A2%98.md "BroadcastReceiver安全问题"
394394
[80]: https://github.com/CharonChui/AndroidNote/blob/master/AdavancedPart/Crash%E5%8F%8AANR%E5%88%86%E6%9E%90.md "Crash及ANR分析"
395395

0 commit comments

Comments
 (0)