草庐IT

Reflection

全部标签

generics - Kotlin:泛型、反射以及类型 T 和 T:Any 之间的区别

如果我尝试访问泛型类型T的javaClass,Kotlin编译器会提示T不是kotlin.Any的子类型classFoo(valt:T){valcls=t.javaClass//Error,Tisnotasubtypeofkotlin.Any}如果将T定义为Any的子类型,一切正常。classBar(valt:T){valcls=t.javaClass//OK}Q1)如果类型“T”不是“Any”的子类型,那么它可以是哪些类/类的子类型?Q2)T的所有实例是否都存在javaClass,如果存在,我该如何访问它? 最佳答案 默认gene

reflection - 在 Kotlin 中按名称动态获取函数

如何在Kotlin中通过名称动态获取函数?即:funmyFunc11(){println("Veryusefulfunction11")}valfuncName="myFunc"+11valfuncRef=getFunction(funcName)funcRef()编辑:接受的答案似乎是正确的,但是代码目前在Kotlin中遇到了一些错误。提交的错误报告:https://youtrack.jetbrains.com/issue/KT-10690 最佳答案 在名为Global.kt的文件中定义的funmyFunc11(){...}等全局

reflection - 在 Kotlin 中按名称动态获取函数

如何在Kotlin中通过名称动态获取函数?即:funmyFunc11(){println("Veryusefulfunction11")}valfuncName="myFunc"+11valfuncRef=getFunction(funcName)funcRef()编辑:接受的答案似乎是正确的,但是代码目前在Kotlin中遇到了一些错误。提交的错误报告:https://youtrack.jetbrains.com/issue/KT-10690 最佳答案 在名为Global.kt的文件中定义的funmyFunc11(){...}等全局

kotlin - 如何比较类和接口(interface)?

谁能解释我如何比较KClasses和接口(interface)?我知道如何检查类或接口(interface)是否相等,但我不明白如何检查A类是否是B类的父类(superclass)等。interfaceIB{}interfaceIC:IB{}openclassA{}openclassB:A(){}openclassC:B(),IC{}funmain(args:Array){if(B::class==B::class){println("BclassisequaltoBclass")}if(IB::class==IB::class){println("IBinterfaceisequal

kotlin - 如何比较类和接口(interface)?

谁能解释我如何比较KClasses和接口(interface)?我知道如何检查类或接口(interface)是否相等,但我不明白如何检查A类是否是B类的父类(superclass)等。interfaceIB{}interfaceIC:IB{}openclassA{}openclassB:A(){}openclassC:B(),IC{}funmain(args:Array){if(B::class==B::class){println("BclassisequaltoBclass")}if(IB::class==IB::class){println("IBinterfaceisequal

reflection - 我想检测一个 JVM 类是否是 Kotlin 类

如果我遇到Kotlin类而不是通用Java类,我想做一些特殊的功能。如何检测它是否是Kotlin类?如果类不是Kotlin,我希望调用someClass.kotlin会引发异常或失败。但它很好地包装了Java类。然后我注意到,如果我执行someClass.kotlin.primaryConstructor它似乎是所有java类的null即使它们有一个默认构造函数,这是一个好的标记吗?但是对于Kotlin类也可以返回null吗?说“这是一个Kotlin类吗?”的最佳方式是什么? 最佳答案 Kotlin为它的所有类添加了一个注解,您可以

reflection - 我想检测一个 JVM 类是否是 Kotlin 类

如果我遇到Kotlin类而不是通用Java类,我想做一些特殊的功能。如何检测它是否是Kotlin类?如果类不是Kotlin,我希望调用someClass.kotlin会引发异常或失败。但它很好地包装了Java类。然后我注意到,如果我执行someClass.kotlin.primaryConstructor它似乎是所有java类的null即使它们有一个默认构造函数,这是一个好的标记吗?但是对于Kotlin类也可以返回null吗?说“这是一个Kotlin类吗?”的最佳方式是什么? 最佳答案 Kotlin为它的所有类添加了一个注解,您可以

reflection - kotlin反射获取字段列表

在Kotlin中是否有java反射foo.getClass().getFields()的等价物?我发现只有知道字段名称才能访问字段,但我想以通用方式处理字段。 最佳答案 您是否想要“支持字段”中的字段或“属性”中的字段...Kotlin真的只有属性。您可以使用以下方法为某些类(class)获取这些:MyTest::class.memberProperties//orMyTest::class.declaredMemberProperties来自JavaClass,使用kotlin获取Kotlin的扩展属性KClass您可以从中继续:

reflection - kotlin反射获取字段列表

在Kotlin中是否有java反射foo.getClass().getFields()的等价物?我发现只有知道字段名称才能访问字段,但我想以通用方式处理字段。 最佳答案 您是否想要“支持字段”中的字段或“属性”中的字段...Kotlin真的只有属性。您可以使用以下方法为某些类(class)获取这些:MyTest::class.memberProperties//orMyTest::class.declaredMemberProperties来自JavaClass,使用kotlin获取Kotlin的扩展属性KClass您可以从中继续:

reflection - 创建 KClass 的新实例

我有一个Kotlin类,其主要(也是唯一的)构造函数为空。我有这个类的引用:valkClass:KClass=MyClass::class如何使用反射创建此类的实例?在Java中我会做myClass.newInstance()但在Kotlin中我似乎需要先找到构造函数:kClass.constructors.first().call()我在somebugreports中看到了primaryConstructor的提及但它没有出现在我的IDE中。 最佳答案 在您的情况下,Java反射可能就足够了:您可以使用MyClass::class