Kotlin与Java 的反射

我们可以使用 instance::class.javaClassName::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