Quiero detectar si una class JVM es una class Kotlin o no

Quiero hacer una funcionalidad especial si encuentro una class Kotlin en comparación con una class Java genérica. ¿Cómo puedo detectar si es una class de Kotlin?

Esperaba que llamar a someClass.kotlin arrojara una exception o fallara si la class no era Kotlin. Pero envuelve las classs de Java muy bien. Entonces noté que si hago someClass.kotlin.primaryConstructor parece ser null para todas las classs de Java incluso si tienen un constructor pnetworkingeterminado, ¿es eso un buen marcador? Pero, ¿puede eso devolver null para una class Kotlin también?

¿Cuál es la mejor manera de decir "¿es ésta una class de Kotlin?"

Kotlin agrega una anotación a todas sus classs, y usted puede verificar su existencia por su nombre de manera segura. Este es un detalle de implementación y podría cambiar con el time, pero algunas bibliotecas key usan esta anotación por lo que es probable que esté bien por time indefinido.

 fun Class<*>.isKotlinClass(): Boolean { return this.declanetworkingAnnotations.any { it.annotationClass.qualifiedName == "kotlin.Metadata" } } 

Se puede usar como:

 someClass.isKotlinClass() 

La class kotlin.Metadata no se accede directamente porque está marcada como internal en el time de ejecución de Kotlin.

  • ¿Cómo cambiar un campo de miembro con la reflexión de Kotlin?
  • Kotlin, cómo recuperar el valor del campo a través de la reflexión
  • ¿Hay alguna manera de identificar una class de datos Kotlin de una class regular de Kotlin?
  • Los literales de class Kotlin con el lado izquierdo vacío aún no son compatibles.
  • ¿Cómo hacer inferencia tipo Kotlin desde la reflexión KClass?
  • Determinar si una instancia es una instancia de una class de datos
  • ¿El comstackdor de Kotlin siempre conserva los nombres de los parameters en bytecode?
  • Kotlin: ¿Es aquí una forma inteligente de lanzar NotImplementedError para todos los methods de una class?
  • La delegación de propiedad kotlin alias lanza Exception
  • Interoperabilidad de reflexión de Kotlin con Java
  • ¿Cómo puedo establecer una propiedad de un object complementario en Kotlin a través de la reflexión?