¿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() 
  • Diferencia entre el método takeWhile () y filter () en Kotlin
  • Cómo upload el valor de retorno de un constructor
  • Hashmap con tipo de datos ArrayList (Kotlin)?
  • Cómo usar un setter personalizado en el cuerpo constructor de la class Kotlin
  • Al crear una interfaz en Kotlin, ¿importa si las properties tienen get / set?
  • La vista personalizada no está dibujada en Android
  • Cómo evitar que kotlin.Unit object sea eliminado por Proguard
  • Orden de datos de spring por function de Java
  • Mocktito ArgumentCaptor para Kotlin lambda con arguments
  • "+" En Kotlin Coroutines?
  • ¿Cómo acceder a CalendarProvider con Room?