从kotlin中的顶级函数获取类引用

suc*_*bus 9 class kotlin

我写了一个简短的程序,它不需要任何类,而只需要顶级函数.

从你编写的java代码中找到jar的位置

MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()
Run Code Online (Sandbox Code Playgroud)

但由于我没有在我的kotlin代码中声明任何类,我不知道如何获得类引用.

我目前的实施是这样的

class Ref
val jarPath = Ref::class.java.protectionDomain.codeSource.location.toURI().path
Run Code Online (Sandbox Code Playgroud)

这显然是非常糟糕的代码.

所以我的问题是,如何在不声明任何不必要的类的情况下在kotlin中获取类引用.任何提示赞赏:)

Ale*_*lov 9

您可以使用对象表达式声明一个类,但是匿名的类,以便它对周围的代码不可见:

val jarPath = object {}.javaClass.protectionDomain.codeSource.location.toURI().path
Run Code Online (Sandbox Code Playgroud)