首页
学习
活动
专区
工具
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.7K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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@名」获取目标引用

    86050

    Kotlin难点

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

    44040

    是时候使用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.5K90

    干货 | Kotlin超棒语言特性

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

    1.5K40

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

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

    70530

    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闭包。

    10.2K20

    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 引用。这样开发库就可以正常使用了。...开发库作用

    99230

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

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

    95010

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

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

    40820

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

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

    90420

    Getting started with Kotlin on Android

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

    72650

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

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

    1.2K90

    hello Kotlin

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

    92050

    前沿 | 为什么我要改用Kotlin

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

    65210

    Kotlin入门学习,从零基础入门到精通 ,Kotlin超详细教程

    Lambda表达式:Kotlin支持简洁Lambda表达式,用于编写匿名函数。 内联函数:Kotlin提供了内联函数(如let、run、with、apply等),用于在作用域内执行代码块。...如何学习该知识 通过编写包含、继承、接口和抽象Kotlin代码,练习使用这些特性。 阅读Kotlin官方文档或相关教程,深入理解Kotlin与对象用法。...Kotlin扩展功能与高阶函数 重点详细内容知识点总结 扩展函数与扩展属性:Kotlin允许为已存在添加新函数或属性,而无需继承或使用装饰者模式。...高阶函数:函数可以作为参数或返回值传递给其他函数,用于实现更灵活和可重用代码。 如何学习该知识 通过编写包含扩展函数和高阶函数Kotlin代码,练习使用这些特性。...资源简介 本教程涵盖了Kotlin语言基础语法、类型系统、函数与Lambda表达式、与对象、集合与迭代器、协程与异步编程、与Android开发相关知识点以及Kotlin扩展功能与高阶函数等内容。

    12710
    领券