ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 1. 介绍 在`Kotlin`中类似的可以有反射,可以通过下面几种方式: ~~~kotlin val password = 类的实例 // 直接通过对象来获取 val clazz1 = password.javaClass // 通过Class.forName来获取 val clazz2 = Class.forName("com.example.kotlinstudy.reflect.Password") // 通过类直接获取 val clazz3 = 类::class.java ~~~ 然后,类似的可以用`getDeclaredField(fieldname)`方法可以获取所有的字段`Field`,用`getDeclaredMethod`来获取其方法。 # 2. 案例 ~~~ override fun onPrepareOptionsMenu(menu: Menu?): Boolean { if (menu is MenuBuilder) { val clazz = menu.javaClass val declaredMethod = clazz.getDeclaredMethod("setOptionalIconsVisible", Boolean::class.java) declaredMethod.isAccessible = true declaredMethod.invoke(menu, true) } return super.onPrepareOptionsMenu(menu) } ~~~