伴生对象companion object,它是该类所有实例共有的对象,类似Java的静态字段 public class SingleCase private constructor() { companion object { val instance: = SingleCase () } } 1. 2. 3. 4. 5. //带参数 class SingleCase private constructor(str: String) { var string: String = str; companion ...
data class User(val name: String, val age: Int) val jane = User("Jane", 35) val (name, age) = jane println("$name, $age years of age") // prints "Jane, 35 years of age" data class的参数可以有默认值,从最后一个参数起,如果有默认值的话,那么实例化时可以不用传参。 data class ...
==UNINITIALIZED_VALUE时表示已经初始化了,当_value === UNINITIALIZED_VALUE 则需要初始化,那么就执行了initializer表达式,本例中,就会执行单例类的构造函数SingletonDubbleCheckKotlin()并赋值给_value。 我们在介绍by关键字时提到,lazy需要实现一个getvalue函数返回当前属性的实例。读者读到这里发现我们目前只是实例化了...
3、用实例说明其比Java的简洁性 3.1、数据类的对比 Kotlin版: dataclassUser(valname:String,valpwd:String) Java版: publicclassUser{privateString name;privateString pwd;publicUser(){}publicUser(String name,String pwd){this.name=name;this.pwd=pwd;}publicStringgetName(){returnname;}publicvoidsetName(...
Kotlin中用class关键字来声明一个类: class Person { var name = "" var age = 0 fun eat() { println(name + " is eating. He is " + age + " years old.") } } 1. 2. 3. 4. 5. 6. 7. 8. 类的实例化: val p = Person() ...
data class Person(val name: String, val age: Int) 这将创建一个名为`Person`的数据类,其中具有两个属性`name`和`age`。由于我们没有显式地定义任何构造方法,因此Kotlin会自动为我们生成一个无参构造方法。 要使用这个类,我们可以直接实例化它: kotlin val person = Person("John", 25) 这将创建一个名...
数据类是可以实现接口的,如(序列化接口),同时也是可以继承其他类的,如继承自一个密封类。 3、用实例说明其比Java的简洁性 3.1、数据类的对比 Kotlin版: data class User(val name : String, val pwd : String) Java版: public class User { private String name; private String pwd; public User(){} ...
下面是一个示例代码,演示如何通过反射实例化Kotlin数据类Person: 代码语言:txt 复制 data class Person(val name: String, val age: Int) fun main() { val personClass = Person::class val constructors = personClass.constructors val constructor = constructors.first() // 选择第一个构造函数 ...
可以将密封类对比枚举类:枚举常量只存在一个实例,而密封类的一个子类可以有可包含状态的多个实例。 sealedclassAsync<outT> { object Loading : Async<Nothing>() dataclassSuccess<outT>(valdata:T) :Async<T>() } 转换成Java类: //注意看,这里是abstract抽象类publicabstractclassAsync{privateAsync() { ...
1.类的定义与对象实例化 Kotlin不同于Java,**允许在一个文件中定义多个类**, 首先关注的一点是:类,成员变量,成员方法的作用域,写个简单的例子: 然后打开生成.class文件可以看到对应的修饰符: 从中我们可以得出以下结论: 没有任何修饰符,默认是private的,另外成员变量会默认生成 **public final **的 getter和se...