- 两者相似,但工作方式完全不一样: 对象表达式会它们使用的地方马上执行对象声明则是懒加载的,也就是当第一次访问它时,它才会初始化伴生对象则是当类被加载时才被初始化的与Java的静态初始是一致的。 两者相似,但工作方式完全不一样: 对象表达式会它们使用的地方马上执行对象声明则是懒加载的,也就是当第一次访问它时,它才会初始化伴生对象则是当类被加载时才被初始化的与Java的静态初始是一致的。
- 对有Java基础的小伙伴来说,掌握Kotlin的基本使用是很容易的。我们编程时,时刻都要与类型打交道,因此了解这两门语言的类型的对应关系,就可以在写Kotlin时借用很多Java的思考习惯。下面列出一些类型的对应关系: 1.Java拆箱基本类型对应的Kotlin类型 Java TypeKotlin Typebytekotlin.Byteshortkotlin.Sho... 对有Java基础的小伙伴来说,掌握Kotlin的基本使用是很容易的。我们编程时,时刻都要与类型打交道,因此了解这两门语言的类型的对应关系,就可以在写Kotlin时借用很多Java的思考习惯。下面列出一些类型的对应关系: 1.Java拆箱基本类型对应的Kotlin类型 Java TypeKotlin Typebytekotlin.Byteshortkotlin.Sho...
- Java与Kotlin互相调用 KotlinTestMe.kt文件: object KotlinTestMe { val sum = {x: Int, y: Int -> x + y}// lamda表达式 } class MyKotlinClass{ fun hello(){ // 在Kotlin中调用Java val s = Main.mySum(Kot... Java与Kotlin互相调用 KotlinTestMe.kt文件: object KotlinTestMe { val sum = {x: Int, y: Int -> x + y}// lamda表达式 } class MyKotlinClass{ fun hello(){ // 在Kotlin中调用Java val s = Main.mySum(Kot...
- Kotlin这语言有一个特点,它直接支持一些特别有用的设计模式在里面,如Kotlin的对象声明(单例),我们今天讲它的另外一种:委托。 在委托设计模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。许多其他设计模式,如状态模式、策略模式、访问者模式实际上也采用了委托模式。委托模式使得我们可以用聚合来替代继承,它还使我们可以模拟mixin。... Kotlin这语言有一个特点,它直接支持一些特别有用的设计模式在里面,如Kotlin的对象声明(单例),我们今天讲它的另外一种:委托。 在委托设计模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。许多其他设计模式,如状态模式、策略模式、访问者模式实际上也采用了委托模式。委托模式使得我们可以用聚合来替代继承,它还使我们可以模拟mixin。...
- Java是没有这一说法的。Kotlin的对象表达式是用来创建匿名类的对象用的。 interface MyInterface { fun bar(); } class Box { fun foo(f:MyInterface){ f.bar() } } var d = Box() // 匿名内部类 d.foo(object: MyInterface{ override ... Java是没有这一说法的。Kotlin的对象表达式是用来创建匿名类的对象用的。 interface MyInterface { fun bar(); } class Box { fun foo(f:MyInterface){ f.bar() } } var d = Box() // 匿名内部类 d.foo(object: MyInterface{ override ...
- 1.概述 Kotlin接口即可以有抽象方法,也可以有实现了的方法。接口与抽象类的区别在于接口不能存在状态。接口还可以有属性,不过这些属性只能是抽象的,或者提供访问器的实现。Kotlin的接口与Java的类似,也是可以多继承的。 接下来我们来看年Kotlin如何定义接口,以及多继承情况下如何解决冲突和Kotlin中的属性有何特别。 2.定义 Kotlin接口与Jav... 1.概述 Kotlin接口即可以有抽象方法,也可以有实现了的方法。接口与抽象类的区别在于接口不能存在状态。接口还可以有属性,不过这些属性只能是抽象的,或者提供访问器的实现。Kotlin的接口与Java的类似,也是可以多继承的。 接下来我们来看年Kotlin如何定义接口,以及多继承情况下如何解决冲突和Kotlin中的属性有何特别。 2.定义 Kotlin接口与Jav...
- Kotlin伴生对象的行为看起来就是Java的static的方法和属性。但它们本质区别还是很大的。 什么是伴生对象呢? 一个在类里面用companion关键字标记的对象声明,这个对象就是伴生对象。 class MyClass { companion object Factory { fun create(): MyClass = MyClass() } } 1... Kotlin伴生对象的行为看起来就是Java的static的方法和属性。但它们本质区别还是很大的。 什么是伴生对象呢? 一个在类里面用companion关键字标记的对象声明,这个对象就是伴生对象。 class MyClass { companion object Factory { fun create(): MyClass = MyClass() } } 1...
- 可见性修饰符 Kotlin有private,protected,internal,public四个修饰符。Kotlin的类、对象、接口、构造函数、函数、属性和它的getters和setters都可以用这些修饰符修饰。如果没有明确指定修饰符,那么它默认就是public。 包 函数、属性、类、对象、接口都可以定义在顶层,即直接定义在包里。 // file name ... 可见性修饰符 Kotlin有private,protected,internal,public四个修饰符。Kotlin的类、对象、接口、构造函数、函数、属性和它的getters和setters都可以用这些修饰符修饰。如果没有明确指定修饰符,那么它默认就是public。 包 函数、属性、类、对象、接口都可以定义在顶层,即直接定义在包里。 // file name ...
- 我们经常创建类,主要目的是为了持有数据。在这样的类中,标准的功能和工具函数从数据中机械推导出来的。这样的类在Kotlin中叫做数据类(data class),用data标记: data class User(val name: String, val age: Int) 1 编译器会自动从在主构造函数中声明的属性推导出以下这些成员来: equals()/hashC... 我们经常创建类,主要目的是为了持有数据。在这样的类中,标准的功能和工具函数从数据中机械推导出来的。这样的类在Kotlin中叫做数据类(data class),用data标记: data class User(val name: String, val age: Int) 1 编译器会自动从在主构造函数中声明的属性推导出以下这些成员来: equals()/hashC...
- Kotlin的嵌套类和内部类都是写在某个类里面,区别在于嵌套类不能访问外部类的成员,如果友嵌套类前加上关键字inner它就会成为一个内部类,这时它就可以访问外部类的成员了。 嵌套类 嵌套类不能访问外部类的成员! class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } ... Kotlin的嵌套类和内部类都是写在某个类里面,区别在于嵌套类不能访问外部类的成员,如果友嵌套类前加上关键字inner它就会成为一个内部类,这时它就可以访问外部类的成员了。 嵌套类 嵌套类不能访问外部类的成员! class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 } } ...
- Kotlin扩展 Kotlin提供了用一个新的函数来扩展一个类的能力,而不需要继承这个类或用设计模式如装饰者来实现。有了这个能力,我们就可以轻松为那些我们不能改变的第三方包中的类添加功能。为类添加了的函数,可以像类的其他函数一样调用。除了扩展函数外,还可以扩展属性,让你为已存在的类定义新属性。这个Kotlin机制叫扩展函数。 扩展函数 声明一个扩展函数,我们需要在... Kotlin扩展 Kotlin提供了用一个新的函数来扩展一个类的能力,而不需要继承这个类或用设计模式如装饰者来实现。有了这个能力,我们就可以轻松为那些我们不能改变的第三方包中的类添加功能。为类添加了的函数,可以像类的其他函数一样调用。除了扩展函数外,还可以扩展属性,让你为已存在的类定义新属性。这个Kotlin机制叫扩展函数。 扩展函数 声明一个扩展函数,我们需要在...
- Kotlin密封类 密封类被用于展示受限的类层次结构。当一个值可以有一个来自一个有限集合中的类型,但不能有任何其他类型。在某种程度上来说,它们是枚举类的扩展,一个枚举类型的值的集合也是受限的。但每一个枚举常量只作为一个单例存在,而密封类的子类可以有多个实例,这些实例都可以包含状态。 定义一个密封类,你只需将sealed修饰符放在类名之前。一个密封类可以有多个子类,但它... Kotlin密封类 密封类被用于展示受限的类层次结构。当一个值可以有一个来自一个有限集合中的类型,但不能有任何其他类型。在某种程度上来说,它们是枚举类的扩展,一个枚举类型的值的集合也是受限的。但每一个枚举常量只作为一个单例存在,而密封类的子类可以有多个实例,这些实例都可以包含状态。 定义一个密封类,你只需将sealed修饰符放在类名之前。一个密封类可以有多个子类,但它...
- Kotlin属性与字段 Kotlin属性与字段1、声明属性2、Getters和Setters方法3、返回字段4、返回属性5、编译时常量6、延迟初始化的属性和变量7、重写属性8、委托属性9、Kotlin编译器对委托属性的处理10、提供委托 Kotlin属性与字段 1、声明属性 Kotlin类中的属性可以使用var关键字声明为可变的,或者使用val关键... Kotlin属性与字段 Kotlin属性与字段1、声明属性2、Getters和Setters方法3、返回字段4、返回属性5、编译时常量6、延迟初始化的属性和变量7、重写属性8、委托属性9、Kotlin编译器对委托属性的处理10、提供委托 Kotlin属性与字段 1、声明属性 Kotlin类中的属性可以使用var关键字声明为可变的,或者使用val关键...
- Kotlin可以在声明处或使用处解决泛型歧义 声明处解决泛型歧义 一、上界异常 1.Java泛型类 public class Box<T> { } 12 以下赋值是错误的:错误!错误!错误! 编译器会报类型不匹配的错误。 Box<Object> box1 = new Box<Object>(); Box<String... Kotlin可以在声明处或使用处解决泛型歧义 声明处解决泛型歧义 一、上界异常 1.Java泛型类 public class Box<T> { } 12 以下赋值是错误的:错误!错误!错误! 编译器会报类型不匹配的错误。 Box<Object> box1 = new Box<Object>(); Box<String...
- Kotlin Demo 使用Kotlin实现了电子签名,用Kotlin写Android应用真是舒服。 我自定义了一个SignatureView: package com.wong.testp import android.annotation.SuppressLint import android.content.Context import android.gra... Kotlin Demo 使用Kotlin实现了电子签名,用Kotlin写Android应用真是舒服。 我自定义了一个SignatureView: package com.wong.testp import android.annotation.SuppressLint import android.content.Context import android.gra...
上滑加载中
推荐直播
-
华为云云原生FinOps解决方案,为您释放云原生最大价值
2024/04/24 周三 16:30-18:00
Roc 华为云云原生DTSE技术布道师
还在对CCE集群成本评估感到束手无策?还在担心不合理的K8s集群资源申请和过度浪费?华为云容器服务CCE全新上线云原生FinOps中心,为用户提供多维度集群成本可视化,结合智能规格推荐、混部、超卖等成本优化手段,助力客户降本增效,释放云原生最大价值。
回顾中 -
鲲鹏开发者创享日·江苏站暨数字技术创新应用峰会
2024/04/25 周四 09:30-16:00
鲲鹏专家团
这是华为推出的旨在和众多技术大牛、行业大咖一同探讨最前沿的技术思考,分享最纯粹的技术经验,进行最真实的动手体验,为开发者提供一个深度探讨与交流的平台。
回顾中
热门标签