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 2
|
11
Leviathann 2022-06-27 19:33:59 +08:00 3
不是 现在连学都不学就可以来吐槽品评语法了吗
|
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
HubOwO 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 出这个类时默认要传的参数
|