
1 Helsing 2022-06-27 18:56:15 +08:00 via iPhone 看 Kotlin 构造方法的介绍 |
2 youngxhui 2022-06-27 18:58:49 +08:00 via Android kotlin data class |
3 cmdOptionKana 2022-06-27 18:58:56 +08:00 你看这个 class Gallery_1(val context: Context),与 class Album(val id: String) 小括号的用法是不是一样? |
4 qianxi0410 2022-06-27 19:00:07 +08:00 scala 没有? |
5 chendy 2022-06-27 19:00:11 +08:00 java 还真有,但是不是 class (虽然也是 class )是 record |
6 FireFoxAhri 2022-06-27 19:00:12 +08:00 有点像 Scala 的 case class |
7 AltairT 2022-06-27 19:02:31 +08:00 |
8 EscYezi 2022-06-27 19:12:00 +08:00 via iPhone 如果用过 Lombok ,这个类似于成员变量+AllArgConstructor 的简化版 |
9 bringyou 2022-06-27 19:25:46 +08:00 ps: 自从 java14 开始,也有这个语法了,详见[record class]( https://www.baeldung.com/java-record-keyword) |
10 lisongeee 2022-06-27 19:33:57 +08:00 |
11 Leviathann 2022-06-27 19:33:59 +08:00 不是 现在连学都不学就可以来吐槽品评语法了吗 |
12 lisongeee 2022-06-27 19:42:25 +08:00 楼上某些人不要把 data class 和 普通 class 搞混了,楼主代码示例里没有 data class 也没有 record class 这就是 在构造器声明属性并初始化属性 在线运行 https://pl.kotl.in/CjwWRrWLl |
13 su100 2022-06-27 20:05:18 +08:00 // 1 class Album( val id: String, val name: String, var count: LOng= 0, var age: Int? = null, ) // 2 class Album2(id: String, name: String, count: Long, age: Int? = null) { val id = id var name = name var count = count var age = age } // 3 class Album3(id: String, name: String, count: Long, age: Int? = null) { val id: String var name: String var count: Long var age: Int? init { this.id = id this.name = name this.count = count this.age = age } } ============== 以上三种写法等价的,如果写成第二种,idea 会提示你可以将 id 、name 这些移到构造函数,就是以一种那样。 |
14 MakHoCheung 2022-06-27 21:09:40 +08:00 Java 怎么就没有这种用法呢,Java 的 Record 就是这种写法 |
15 jeesk OP @MakHoCheung 不好意思。 除了楼上说的 scala 的 case 我在 java 真没见过省略参数。 我也是第一次看 kotlin 的代码, 见谅。.我不是搞这玩意的。 |
17 zoharSoul 2022-06-28 14:07:36 +08:00 这不就是构造函数吗 |
18 jiulang 2022-06-28 15:35:51 +08:00 record TcpReset(TcpConnection Connection, byte[]? DivertBuffer, WinDivertAddress DivertAddress, long Ticks); |
19 jiulang 2022-06-28 15:36:32 +08:00 kotlin 和 csharp 简直一样 |
20 ZhuZhuQianJin 2022-06-28 16:47:52 +08:00 写的没啥问题呀,能省就省了呗,反正是数据类,就是为了声明结构,要那么多 get set 干啥,写多了就很丝滑,看起来也很顺畅,设计思想 歪瑞古德 |
21 cenbiq 2022-06-29 10:25:27 +08:00 via iPhone 这不很多语言都有这种吗,C#/Java 也有啊 |
22 zzAndroid 2022-12-24 15:19:48 +08:00 class 后面跟小括号,就代表是个构造函数,括号里的形参就相当于 new 出这个类时默认要传的参数 |