companion object companion object用来定义伴生对象,它允许在类的上下文中定义类似于static静态方法和变量的功能 open class User(val name: String, age: Int) { open val age: Int = age } // 定义一个类和其伴生对象 class Student( name: String, override
伴生对象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 ...
class CompanionObjectTest{ companion object { var TAG = "PRINT" fun show(info: String){ println("info: $info") } } } fun main() { CompanionObjectTest.show("test companion object") println(CompanionObjectTest.TAG) } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 输出:...
companion object Factory { fun create(): MyClass = MyClass() } } 使用时就是用类+方法:MyClass.create()。 扩展阅读Object expressions and declarations。 纯数据类型 对于函数式编程,通常要写大量的PoJo用以在函数之间传递数据,这些对象最大的特点就是仅是数据,且不可变(Immutable),通常的实现方式就是把...
Kotlin内部实现_01_companion object 1. companion object 概述 在 Kotlin 中,companion object 是一种特殊的对象声明,它用于在类内部创建静态成员。这是 Kotlin 对 Java 中静态成员的一种替代方案,因为 Kotlin 自身不
数据类是一个简单版的 Class,它自动添加了包括 equals(),hashCode(), copy() 和 toString() 方法。将数据与业务逻辑分开。 data class User(val name: String, val age: Int) 如果使用 Gson 解析 Json 的数据类,则可以使用默认值构造函数: // Example with Gson's @SerializedName annotation ...
classRectangle(valwidth:Int,valheight:Int) {constructor(size:Int) :this(size, size) } 类的继承 Kotlin 中类默认是final的,需要加上open关键字才能被继承: openclassAnimal{openfunsound(){ println("Animal sound") } }classDog:Animal() {overridefunsound(){ ...
dataclassPerson(@set:JvmName("changeName")varname: String,@JvmFieldvarage:Int,@get:JvmName("likesPink")varlikesPink:Boolean){lateinitvaraddress:String} 3.JvmStatic 当我们将Java文件的静态方法迁移到Kotlin中时,我们会将其放在 companion object中,但是这...
Kotlin中还提供了 伴生对象 ,用companion object关键字声明:class DataProcessor { companion object DataProcessor { fun process() { println("I am processing data ...") } } } fun main(args: Array<String>) { DataProcessor.process() // I am processing data ... }一个类只能有1个伴生对象。
// 在类名后面直接写的构造器称为主构造器,age直接在构造器里声明的,称为构造属性classPersonconstructor(name:String,privatevarage:Int){companion object{constvalTAG="Person"}varname:String?=nullprivatevarsex:String?=nullprivatevarweight:Float?=null// 初始化代码块init{sex="男"}// 次级构造函数,必须要...