草庐IT

Reflection

全部标签

java - 一个领域出错的反射(reflection)

我一直在尝试对android.os.build类中的特定字段使用反射,MANUFACTURER字段...我试过使用这段代码:try{ClassmyBuildClass=android.os.Build.class;Fieldm1=Build.class.getDeclaredField("MANUFACTURER");validField=true;manufacturer=Build.MANUFACTURER;}catch(Exceptionex){manufacturer=Build.PRODUCT;System.err.println("getDeviceSpecifics,go

Android,如何清除大多数手机中可以从主页按钮获得的最近任务列表?反射(reflection)是一种可能的方式吗?

我正在写一个启动器,它需要从系统中清除最近的应用程序/任务列表,而不是“没有在最近的任务列表中显示我的应用程序”,但我现在对此一无所知。我在stackoverflow中搜索过,只有thisissue匹配但答案没有任何帮助。其他人也问过同样的问题,他提到了来自Android4.0的RemoveTask。是的,我已经检查了Android2.3.7和Android4.0的源代码,在一个回合估计,如果我能删除ActivityMangerService.Java中定义的mRecentTasks列表,我想我几乎可以到达终点:finalArrayListmRecentTasks=newArrayLi

java - 安卓/Java : Calling a method using reflection?

我有一个名为chooseDialog(Strings,inti)的静态方法,我想在其中根据提供给chooseDialog的参数调用同一类(Dialogs.class)中的另一个方法。s是所需方法的名称,i是它的单个参数。我已经尝试了很多教程并花了几个小时阅读了这个主题,但我似乎无法确切地掌握我需要做什么。有什么想法吗?谢谢! 最佳答案 为什么要调用名称传入字符串参数的方法?您不能为不同的操作创建常量,然后使用switch并在每种情况下调用带有参数i的方法吗?您将受益于编译器会检查您的代码是否有错误。编辑:如果你真的想使用反射,检索一

reflection - kotlin 反射检查可空类型

如何测试KType变量是否包含可空kotlin类型的值(例如Int?)?我有vartype:KType变量来自KProperty.returnType我需要检测它是否等于某些kotlin类型(Int、Long等)。这适用于:when(type){Int::class.defaultType->...Long::class.defaultType->...else->...}但这仅适用于不可为空的类型,所以第一个分支与Int不匹配?但是我还无法弄清楚如何检测类型是Int?除了明显但不是很好type.toString().equals("kotlin.Int?")

reflection - kotlin 反射检查可空类型

如何测试KType变量是否包含可空kotlin类型的值(例如Int?)?我有vartype:KType变量来自KProperty.returnType我需要检测它是否等于某些kotlin类型(Int、Long等)。这适用于:when(type){Int::class.defaultType->...Long::class.defaultType->...else->...}但这仅适用于不可为空的类型,所以第一个分支与Int不匹配?但是我还无法弄清楚如何检测类型是Int?除了明显但不是很好type.toString().equals("kotlin.Int?")

reflection - 尚不支持左侧为空的 Kotlin 类文字?

我正在尝试使用这样的if表达式检查一个类型是否符合另一种类型:if(String::classisAny::class)这给了我尚不支持左侧为空的错误类文字。谁能详细说明该错误和/或告诉我应该如何进行此检查?编辑(澄清):我无法进行相等性检查,因为我需要知道左侧的类是否与右侧的类匹配或者是它的子类。因此,如果左侧类的实例可以安全地转换为右侧类。基本上我需要相当于:if("Astring"isAny)但没有String实例,这里只是使用String的例子。 最佳答案 我想如果Kotlin在一个KClass和另一个KClass之间使用i

reflection - 尚不支持左侧为空的 Kotlin 类文字?

我正在尝试使用这样的if表达式检查一个类型是否符合另一种类型:if(String::classisAny::class)这给了我尚不支持左侧为空的错误类文字。谁能详细说明该错误和/或告诉我应该如何进行此检查?编辑(澄清):我无法进行相等性检查,因为我需要知道左侧的类是否与右侧的类匹配或者是它的子类。因此,如果左侧类的实例可以安全地转换为右侧类。基本上我需要相当于:if("Astring"isAny)但没有String实例,这里只是使用String的例子。 最佳答案 我想如果Kotlin在一个KClass和另一个KClass之间使用i

reflection - Kotlin 获取字段注释始终为空

我有以下Kotlin注释@Target(AnnotationTarget.FIELD,AnnotationTarget.PROPERTY_GETTER)@Retention(AnnotationRetention.RUNTIME)annotationclassField(valvalue:String)以及下面的测试代码classTestObject(@field:Field("id")valid:Long){@field:Field("string")valstring="Helloworld"@get:Field("prop")valpropget()=string}classAn

reflection - Kotlin 获取字段注释始终为空

我有以下Kotlin注释@Target(AnnotationTarget.FIELD,AnnotationTarget.PROPERTY_GETTER)@Retention(AnnotationRetention.RUNTIME)annotationclassField(valvalue:String)以及下面的测试代码classTestObject(@field:Field("id")valid:Long){@field:Field("string")valstring="Helloworld"@get:Field("prop")valpropget()=string}classAn

reflection - 为什么 SomeClass::class 是 KClass<SomeClass> 但 this::class 是 KClass<out SomeClass>

我想打印我的类(class)的属性值。funprint(){valcl=this::classcl.declaredMemberProperties.filter{it.visibility!=KVisibility.PRIVATE}.forEach{println("${it.name}=${it.get(this)}")}}当我尝试构建此代码时,出现编译器错误:Error:(34,40)Kotlin:Out-projectedtype'KProperty1'prohibitstheuseof'publicabstractfunget(receiver:T):Rdefinedinko