kotlin类编译后通过反射获取到的修饰符均为private问题解决方案

本文主要用于记录问题解决方案

遇到的问题:

kotlin开发的class类中定义了一个变量,需要通过反射获取类中当前对象的修饰符,kotlin官方文档说默认对象为public修饰,但是反射结果显示修饰符为private,通过反编译工具查看编译过的类发现,所有的对象不管使用什么修饰符均会编译成private修饰,个人理解应该是按照kotlin的编译规则编译

 

open class ViewHolder : PublicViewHolder(){

    var tv_kta_text : TextView? = null
}

通过查找资料发现需要按照java编译的对象均需要通过注解解决,最终使用如下方式解决问题,使用“import kotlin.reflect.jvm.*

@JvmField

注解过后的对象,编译后修饰符变为默认修饰符public

 

open class ViewHolder : PublicViewHolder(){

    @JvmField
    var tv_kta_text : TextView? = null
}

 

解决方案参考文献:https://blog.csdn.net/qq_32115439/article/details/74852344

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: Kotlin中的修饰符包括访问权限修饰符和成员修饰符。访问权限修饰符包括public、protected、private和internal。其中,public表示所有地方可见,protected表示子类中可见,private表示类中可见,internal表示模块中可见。\[1\]成员修饰符包括override、open、final和abstract。override表示重写函数,open表示可被重写,final表示不能被重写,abstract表示抽象函数。\[2\]此外,Kotlin中还有一些特殊的修饰符,如in和out用于泛型的修饰,in相当于Java中的super关键字,out相当于Java中的extends关键字。\[1\]需要注意的是,在Kotlin中,外层的类不能访问内部类的private成员。\[3\] #### 引用[.reference_title] - *1* *2* [kotlin中的修饰符](https://blog.csdn.net/mjb00000/article/details/79268392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Kotlin语法(九)-修饰符](https://blog.csdn.net/tangxl2008008/article/details/52421476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值