Kotlin与Java 的反射
我们可以使用 instance::class.java、ClassName::class.java 或者 instance.javaClass 通过 java.lang.Class 来进入 Java 的反射类java.lang.Class, 之后我们就可以使用Java中的反射的功能特性了。
代码示例:
1. @RunWith(JUnit4::class)
2. class RefectClassTest {
3. @Test fun testGetterSetter() {
4. val product = Product()
5. val pClz = product::class.java
6. println(pClz.canonicalName)
7. pClz.declaredFields.forEach { println(it) }
8. pClz.declaredMethods.forEach {
9. println(it.name);
10. it.parameters.forEach { println(it) }
11. }
12. }
13. }
运行上面的代码输出:
1. com.easy.kotlin.Product
2. java.lang.Long com.easy.kotlin.Product.id
3. java.lang.String com.easy.kotlin.Product.name
4. java.lang.String com.easy.kotlin.Product.category
5. java.util.Date com.easy.kotlin.Product.gmtCreated
6. java.util.Date com.easy.kotlin.Product.gmtModified
7. getName
8. setName
9. java.lang.String arg0
10. getId
11. setId
12. java.lang.Long arg0
13. setCategory
14. java.lang.String arg0
15. getGmtCreated
16. setGmtCreated
17. java.util.Date arg0
18. getGmtModified
19. setGmtModified
20. java.util.Date arg0
21. getCategory
