¿Hay alguna manera de hacer reference a la class de Java para una function de nivel superior de Kotlin?

Quiero cargar un recurso en una function de nivel superior utilizando Class.getResourceAsStream() .

¿Hay alguna manera de get una reference a la class en la que se comstackrá la function de nivel superior para que pueda escribir, por ejemplo

 val myThing = readFromStream(MYCLASS.getResourceAsStream(...)) 

Otra forma que encontré es declarar una class local o un object anónimo dentro de una function de nivel superior y get su class enclosingClass :

 val topLevelClass = object : Any() {}.javaClass.enclosingClass 

Nota: para trabajar, esta statement debe colocarse en el nivel superior o dentro de una function de nivel superior.

Entonces puede usar topLevelClass como Class<out Any> :

 fun main(args: Array<String>) { println(topLevelClass) // class MyFileNameKt } 

No, no hay syntax para hacer reference a esa class. Puede acceder utilizando Class.forName (). Por ejemplo, si el file se llama "Hello.kt" y se encuentra en el package "demo", puede get la class llamando a Class.forName("demo.HelloKt") .

A falta de una forma de get una reference directamente, me he vuelto a crear un object anónimo en el package actual

 val myThing = object: Any() {}.javaClass.getResourceAsStream(...) 

Como linters como detekt marcarían classs anónimas como EmptyClassBlock también podrías usar algo como

 internal object Resources fun resourceStream(name: String): InputStream { return Resources.javaClass.getResourceAsStream(name) } 

Con Java 7 puede get una reference a la class Java actual desde una function de nivel superior usando

 MethodHandles.lookup().lookupClass() 
  • Kotlin tiene array.indexOf pero no puedo entender cómo hacer array.indexOfBy {lambda}
  • Crear una class genérica con una matriz de tipo Comparable <T> en kotlin?
  • Procesamiento de annotations con el estudio Android Kapt
  • Lambda en expresión de object de tipo múltiple
  • "Error: no se pudo encontrar o cargar principal" O "Clase no encontrada" - con el module de Android (Gradle / IntelliJ)
  • Kotlin: forma idiomática de comprobar la matriz contiene valor
  • Cómo escribir Short / Int en buffer de 1 byte
  • Espere hasta que dos observables emitan verdadero
  • Por qué ejecutar testings de kotlin tan lento en AndroidStudio 3.0
  • Los elementos del menu de la barra de herramientas Android nunca se muestran, pero entran en desbordamiento
  • Flutter: cómo lanzar y la intención de Android y devolver datos para aletear