首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin】:: 双冒号操作符详解 ( 获取引用 | 获取对象类型引用 | 获取函数引用 | 获取属性引用 | Java 中 Class 与 Kotlin KClass )

文章目录 一、:: 双冒号操作符 1、获取引用 引用类型 KClass 说明 2、获取对象类型引用 3、获取函数引用 4、获取属性引用 二、 java.lang.Class 与 kotlin.reflect.KClass...一、:: 双冒号操作符 ---- 在 Kotlin 中 , :: 双冒号操作符 作用是 获取 , 对象 , 函数 , 属性 类型对象 引用 ; 获取这些引用 , 并不常用 , 都是在 Kotlin...1、获取引用Kotlin 中 , 使用 :: 双冒号操作符 获取 类型对象引用 代码格式为 : Java或Kotlin名::class 获取 Kotlin 类型对象 类型...} 2、获取对象类型引用Kotlin 中 , 使用 :: 双冒号操作符 获取 对象类型引用 代码格式为 : Java或Kotlin实例对象::class 获取 对象类型引用 类型 为 KClass...---- KClass 是 Kotlin 引用类型 , 是 Kotlin 实例对象 , 通过 名::class 可以获取 KClass 引用 ; KClass 提供了关于 Kotlin 一系列功能

4.3K10
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin基本语法和使用技巧

String 等类型进行内容比较,相当于 Java 中 equals === :对引用内存地址进行比较,相当于 Java 中 == 如果每个类型都去实现诸如 TextViewList、ActivityList...作用域中使用 this 作为参数,选择 run 作用域中使用 it 作为参数,选择 let apply 适合对一个对象做附加操作时候 let 适合配合空判断时候 with 适合对同一个对象进行多次操作时候...协程就是kotlin官方提供线程api 属性委托 有些常见属性操作,我们可以通过委托方式,它实现,例如:lazy 延迟属性: 值只在第一次访问时候计算 委托 可以通过委托来减少 extend...::class 获取Kotlin 类型是 KClass 使用 名::class.java 获取是 Java 类型 Any Kotlin 顶层父是 Any ,对应 Java....this」 获取目标引用Kotlin 中通过「this@名」获取目标引用

83250

Kotlin难点

因为这其实是个假调用,它是 Kotlin 语法糖,实际上你对一个函数类型对象加括号、加参数,它真正调用是这个对象 invoke() 函数 双冒号 :: 创建一个函数引用或者一个引用 函数引用...如果我们需要使用成员函数或扩展函数,它需要是限定,例如 String::toCharArray。...val c = MyClass::class 该引用是 KClass 类型值 请注意,Kotlin 引用与 Java 引用不同。...当对一个对象调用这样函数并提供一个 lambda 表达式时,它会形成一个临时作用域。在此作用域中,可以访问该对象而无需其名称。这些函数称为作用域函数。...这些函数基本上做了同样事情:在一个对象上执行一个代码块。不同是这个对象在块中如何使用,以及整个表达式结果是什么。

41040

是时候使用Kotlin编程了

并且,Kotlin还提供了智能类型判断功能,使用is类型判断后,编译器自动进行类型转换,父引用可以调用子类接口,注意转换只在is代码块中生效。...Kotlin如何兼容Java 都是Kotlin可以100%兼容Java,那么Kotlin又是如何兼容Java呢?下面是Kotlin一个编译流程图。...变量类型可以根据变量值进行自动推导,这里Kotlin基础类型都是对象,使用是Java包装(基础类型包装成对象)。...伴生对象调用跟Java一样,通过名.属性名称或函数名称调用。 新特性 1,空安全 在Kotlin中,对象声明分为可空引用和非空引用两种。...枚举扩展 6.2 扩展 6.2.1 扩展动机 6.2.2 扩展原生函数 6.2.3 静态解析 6.2.4 扩展属性 6.2.5 扩展伴生对象 6.2.6 扩展作用域 6.2.7 中声明扩展 6.3

3.2K10

Android平台Swift—Kotlin

,甚至已经运用到了自己项目当中,但是还有较多同学可能只是听过Kotlin或简单了解过,这篇文章目的是这些同学对Kotlin有一个系统全面的认识,有兴趣同学在之后学习时候能更加轻车熟路。...类型智能转换:通过is进行类型判断后,编译器自动进行类型转换。父引用可以调用子类接口,注意转换只在is代码块中生效。...变量类型可以根据变量值进行自动推导。这里Kotlin基础类型都是对象,使用是Java包装(基础类型包装成对象)。 2、定义函数 [3.png] 函数使用fun为关键字进行声明。...[16.png] ----- 二、新特性 1、空安全 Kotlin如何实现空安全呢? 在Kotlin中,对象声明分为可空引用和非空引用两种。...[20.png] 我们在任意Activity中都可以直接调用 [21.png] 函数扩展并不是修改了原来,通过反编译成Java代码可以发现,函数扩展是通过静态导入方式实现

3.4K90

干货 | Kotlin超棒语言特性

自从2017年Google宣布Kotlin成为Android官方开发语言之后,Kotlin受到广大Android开发者追捧。...Kotlin能够扩展一个新功能,这个扩展是无痕,即我们无需继承该类或使用像装饰者设计模式,同时这个扩展对使用者来说也是透明,即使用者在使用该类扩展功能时,就像使用这个自身功能一样。...从这个方法定义我们可以看到,这个方法是对Any进行扩展,而接收者类型后面加了个?号,所以准确来说,是对Any?进行扩展。...考虑下面四种场景: 在变量定义中,代表变量类型定义中,代表基类型 在函数定义中,代表函数返回值类型 在匿名对象中,代表对象类型 笼统来说,Kotlin设计者应该就是想用冒号来笼统表示类型这一概念...可以通过使用类型别名给函数类型起一个别称: ? 函数对象最大作用是可以轻易地实现回调,而不需要像Java那样通过代理才可以做到。

1.4K40

你还在把Java当成Android官方开发语言吗?Kotlin了解一下!

List容器,这里在声明里作为“接受者类型”,.作为声明关键字,swap是扩展函数名,其余和Kotlin声明一个普通函数并无区别。...有必要探究一下Kotlin如何实现扩展函数,直接分析Kotlin源码难度还是挺大,还好Android Studio提供了一些工具,我们可以通过Kotlin ByteCode指令,查看Kotlin语言转换字节码文件...3.5 如果留意前面的例子,我们会发现kotlinthis语法和JAVA不同,使用范围更灵活,仅以扩展函数为例,当在扩展函数里调用this时,指代是接受者类型实例,那么如果这个扩展函数声明在一个内部...,我们如何通过this获取到实例呢?...()是一个定义在G内部扩展函数,在这个扩展函数里,我们直接使用Int类型作为接受者类型,因为我们将扩展函数定义在了内部,即使我们设置访问权限为public,它也只能在该类或者该类子类中被访问,

66830

Gradle Kotlin DSL指南

DSL包(但不是它们子包)中相应API文档中列出类型扩展了Gradle公共API。 类型安全模型访问器 Groovy DSL允许您通过名称引用构建模型许多元素,即使它们是在运行时定义。...项目扩展和约定 项目扩展和约定都有名称和唯一类型,但是Kotlin DSL只需要知道类型就可以配置它们。...此外,Kotlin DSL提供了几种选择Groovy语义方法,我们接下来将讨论这一点 静态键入扩展 Groovy和Kotlin语言都支持通过Groovy Extension模块和Kotlin扩展现有...(receiver, "parameters", 42, aReference) Copy Kotlin扩展函数是包级函数,您可以在Kotlin参考文档包级函数一节中了解如何定位声明给定Kotlin扩展类型名称...KotlinClosure0到KotlinClosure2类型允许将Kotlin函数更灵活地适应Groovy闭包。

9.9K20

Kotlin扩展函数与实现机制探索

List容器,这里在声明里作为“接受者类型”,.作为声明关键字,swap是扩展函数名,其余和Kotlin声明一个普通函数并无区别。...有必要探究一下Kotlin如何实现扩展函数,直接分析Kotlin源码难度还是挺大,还好Android Studio提供了一些工具,我们可以通过Kotlin ByteCode指令,查看Kotlin语言转换字节码文件...3.5 如果留意前面的例子,我们会发现kotlinthis语法和JAVA不同,使用范围更灵活,仅以扩展函数为例,当在扩展函数里调用this时,指代是接受者类型实例,那么如果这个扩展函数声明在一个内部...,我们如何通过this获取到实例呢?...()是一个定义在G内部扩展函数,在这个扩展函数里,我们直接使用Int类型作为接受者类型,因为我们将扩展函数定义在了内部,即使我们设置访问权限为public,它也只能在该类或者该类子类中被访问,

2.3K72

R8 编译器: 为 Kotlin 库和应用 瘦身

比如,Kotlin 元数据可以告诉 Kotlin 编译器文件中一个方法实际上是 Kotlin 扩展函数。...(true).build() R8 过去是如何破坏 Kotlin 开发库 正如前文所提到,为了能够在库中使用 Kotlin API,Kotlin 元数据非常重要,然而,元数据存在于注解中,并且会以...这完全说得通,因为没有了元数据,Kotlin 编译器唯一能看到就是一个包含两个参数 Java 静态方法。 保留原始元数据也同样会出问题。首先 Kotlin 元数据中所保留是父类型。...此外,所保留 Kotlin 元数据也被重写,这样所有对于 CommandBuilderBase 引用都被替换为对 a 引用。这样开发库就可以正常使用了。...开发库作用

94730

会写「18.dp」只是个入门——Kotlin 扩展函数和属性(Extension FunctionsProperties)

因为这些方便东西如果太多,就会变成对你和同事打扰。 扩展函数写法 扩展函数写在哪都可以,但写位置不同,作用域就也不同。所谓作用域就是说你能在哪些地方调用到它。...但是……用谁名?是这个函数所属名,还是它 Receiver 名?这是有歧义,所以 Kotlin 就干脆不许我们引用既是成员函数又是扩展函数函数了,一了百了。...在 Kotlin 里,每一个有 Receiver 函数——其实就是成员函数和扩展函数——它引用都可以赋值给两种不同函数类型变量:一种是有 Receiver ,一种是没有 Receiver :...不过我还是要把这个告诉你,因为这样你知识体系才是完整。 说到完整啊,每个做 Android 的人都应该把自己支撑体系扩充一下,自己技能树变完整,你才能百毒不侵,工作和面试都不怕。...总结 这次讲内容挺多,但其实也很简单,主要就这么几点:扩展函数、扩展函数引用、有无 Receiver 函数类型转换以及扩展属性。

90710

如何看待 Kotlin 成为 Android 官方支持开发语言?

对于Java,曾经借助Android这场春风,着实迟暮它再度辉煌,现在和将来在Android领域可谓是棋逢敌手,JavaAndroid开发语言市场份额会降。...这种可为空类型,使用Kotlin之后,我们程序空指针会得到明显改善。 3.实用,高效率。...Kotlin支持OOP(面向对象编程)和FP(函数式编程),语言本身并没有限制,给了我们选择自由,Kotlin对FP友好支持,便于我们写出更加稳定,易于测试,无副作用方法和代码 5.可读性 从客观上...但是不得不指出代码可读性主要依赖编写者编码素质和能力。 对我个人而言,高阶函数和方法扩展这两个特点着实真心受用。方法扩展我有一种创造感,这是Java种Util方法所无法比拟。...解决这个问题,还是需要多学习和思考 2.扩展方法滥用,Kotlin 扩展方法很好,我们可以扩展很多方法,弥补Framework一些不完善,但是扩展时我们需要谨慎,一定要把合适方法放到合适类型

37720

R8 编译器: 为 Kotlin 库和应用 瘦身

比如,Kotlin 元数据可以告诉 Kotlin 编译器文件中一个方法实际上是 Kotlin 扩展函数。...(true).build() R8 过去是如何破坏 Kotlin 开发库 正如前文所提到,为了能够在库中使用 Kotlin API,Kotlin 元数据非常重要,然而,元数据存在于注解中,并且会以...这完全说得通,因为没有了元数据,Kotlin 编译器唯一能看到就是一个包含两个参数 Java 静态方法。 保留原始元数据也同样会出问题。首先 Kotlin 元数据中所保留是父类型。...此外,所保留 Kotlin 元数据也被重写,这样所有对于 CommandBuilderBase 引用都被替换为对 a 引用。这样开发库就可以正常使用了。...开发库作用

85520

Getting started with Kotlin on Android

Extensions 在Java中,要想扩展一个,我们会写一堆Utils。 而在Kotlin中,我们可以直接对double对象进行扩展,再也不需要Utils了。...Generics 我们要创造一个协变应用才能引用它子类集合,与之对应还有逆变。 在Kotlin里数组默认不是协变。 ? 对于不可变集合是默认协变,可变集合默认是逆变。...可以用扩展语法代码更加可读。 Generics简单好用。...引入reified以后,可以把类型声明成reified,这样在函数题里就会引用到这个类型具体Class。Kotlin有一定类型推导功能。...Coroutines提高了异步代码可读性。 Kotlin in AndroidAndroid上有一个常见叫做viewholder。 ?

70850

Android开发必备知识:为什么说Kotlin值得一试

这里添加了 KotlinAndroid 扩展,同时也添加了 Kotlin Gradle 插件。...2.2 与Java交互 Kotlin 标准库更多是对 Java 库扩展,基于这个设计思路,你丝毫不需要担心 Kotlin 对 Java 代码引用,你甚至可以在 Kotlin 当中使用 Java...3.3 扩展 扩展,就是在现有基础上,添加一些属性或者方法,当然扩展这些成员需要导入当前扩展成员所在包才可以访问到。下面给出一个例子: ?...在扩展成员当中,只能访问被扩展在当前作用域内可见成员,本例中x 和 y 都是 public Kotlin 默认 public,这个我们后面会提到),所以可以在扩展方法和属性中直接访问。...为了大家印象深刻,我下面给出类似功能 Java 代码实现: ? 而你如果说希望在 Java 中也希望像下面这样拿到这个泛型参数类型,是不可以: ?

1.1K90

前沿 | 为什么我要改用Kotlin

希望能及时大家了解一下Kotlin。 相信很多开发人员,尤其是Android开发者都会或多或少听说过Kotlin,当然如果没有听过或者不熟悉也没有关系。...注意:Kotlin方法扩展并不是真正修改了对应文件,而是在编译器和IDE方面做得处理。使我们看起来像是扩展了方法。...利用Kotlin高阶函数功能,我们能更好解决这个问题 当然这上面的例子中我们也同时使用了方法扩展这个特性。 Kotlin支持了Streams API和方法引用,这样函数式编程更加方便。...Kotlin和Java交互性很好,可以说是无缝连接。这表现在 Kotlin可以自由引用Java代码,反之亦然。...而比较难抉择情况是如果如何团队转用Kotlin,个人认为团队难以转用原因有很多,比如学习成本,历史包袱等等。但其实根本原因还是思维方式问题,歪果仁喜欢用工具来提升开发效率,因为人力成本很高。

61310

hello Kotlin

这里添加了 KotlinAndroid 扩展,同时也添加了 Kotlin Gradle 插件。...2.2 与Java交互 Kotlin 标准库更多是对 Java 库扩展,基于这个设计思路,你丝毫不需要担心 Kotlin 对 Java 代码引用,你甚至可以在 Kotlin 当中使用 Java...3.3 扩展 扩展,就是在现有基础上,添加一些属性或者方法,当然扩展这些成员需要导入当前扩展成员所在包才可以访问到。下面给出一个例子: ?...在扩展成员当中,只能访问被扩展在当前作用域内可见成员,本例中x 和 y 都是 public Kotlin 默认 public,这个我们后面会提到),所以可以在扩展方法和属性中直接访问。...为了大家印象深刻,我下面给出类似功能 Java 代码实现: ? 而你如果说希望在 Java 中也希望像下面这样拿到这个泛型参数类型,是不可以: ?

88750

紧急应对金三银四跳槽季,那些想要换个场地程序员可以在Android市场行动起来了!

var 和 val 区别? Kotlin 中默认参数作用以及原理? Kotlin 中顶层函数原理 中缀函数是什么?注意点? 解构函数本质? 扩展函数本质? 扩展函数和成员函数区别?...Kotlin 中常用修饰符有哪些? Kotlin 中可见性修饰符有哪些? Kotlin内部类和 Java 中内部类有什么不同? Kotlin 属性代理背后原理? ............Android 扩展知识点 ART Apk 包体优化 Hook Proguard 架构 Jetpack NDK 开发 计算机网络基础 加载器 ............Minar GC 和 Full GC 区别? 说一下四种引用以及他们区别? 加载过程? 加载机制,以及为什么要这样设计? ............JNI 模块专题 静态注册 动态注册 数据类型映射 对象数组引用类型 jni 函数默认参数 jni 是如何访问 java 中方法和字段 jni 访问 java 中静态方法 jni 访问 java 中字段

53510
领券