I want to load a resource in a top level function using Class.getResourceAsStream()
.
Is there any way to get a reference to the class that the top level function will be compiled into so that I can write, for example
val myThing = readFromStream(MYCLASS.getResourceAsStream(...))
Advertisement
Answer
Another way I found is to declare a local class or an anonymous object inside a top level function and to get its enclosingClass
:
val topLevelClass = object{}.javaClass.enclosingClass
Note: to work, this declaration should be placed on top level or inside a top-level function.
Then you can use the topLevelClass
as a Class<out Any>
:
fun main(args: Array<String>) { println(topLevelClass) // class MyFileNameKt }