一、:: 双冒号操作符
在 Kotlin 中 , :: 双冒号操作符 的作用是 获取 类 , 对象 , 函数 , 属性 的 类型对象 引用 ;
获取的这些引用 , 并不常用 , 都是在 Kotlin 反射操作时才会用到 ;
相当于 Java 中的 反射 类的 字节码类型 Class 类型 , 对象的类型 Class 类型 , 对象的函数 Method 类型 , 对象的属性字段 Field 类型 ;
1、获取类的引用
在 Kotlin 中 , 使用 :: 双冒号操作符 获取 类的类型对象引用 代码格式为 :
Java或Kotlin类名::class
获取的 Kotlin 类 的 类型对象 的类型 为 KClass<类名> , 如 : 获取 String 字符串类型的引用 , 代码为 :
String::class
获取的 String 类的引用类型 为 KClass ,
代码示例 : 下面的代码中 , 通过 Student::class 获取的 引用对象的类型 是 KClass ;
import kotlin.reflect.KClass
class Student {
var name = "Tom"
var age = 18
fun info() {
println("$name is $age years old")
}
}
fun main() {
val studentClassRef: KClass<Student> = Student::class
}
引用类型 KClass 说明
Kotlin 中 类的引用类型 KClass 中 提供了很多有用的属性 , 如 :
- public actual val simpleName: String? 属性可以获取类的简单名称 ;
- public val qualifiedName: String? 属性可以获取类的完整名称 ;
kotlin.reflect.KClass 是 Kotlin 语言中的字节码类 , java.lang.Class 是 Java 语言的字节码类 ;文章来源:https://www.toymoban.com/news/detail-700117.html
下面是 KClass 的原型 , 省略了后面的代码 ;文章来源地址https://www.toymoban.com/news/detail-700117.html
package kotlin.reflect
/**
* 表示一个类并提供内省功能。
* 此类的实例可通过 `::class` 语法获得。
* 更多信息请参见
* [Kotlin 语言文档]
* (https://kotlinlang.org/docs/reference/reflection.html#class-references)。
*
* @param T 类的类型。
*/
public actual interface KClass<T : Any> : KDeclarationContainer
到了这里,关于kotlin中,::双冒号的使用详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!