Java 如何在kotlin中获取当前类文件名

Java 如何在kotlin中获取当前类文件名,java,kotlin,Java,Kotlin,在Java中,我可以使用以下代码: public class Ex { public static void main(String [ ] args) { String path = Ex.class.getProtectionDomain().getCodeSource().getLocation().getPath(); String decodedPath = URLDecoder.decode(path, "UTF-8"); } } 但

在Java中,我可以使用以下代码:

public class Ex {
    public static void main(String [ ] args) {
        String path = Ex.class.getProtectionDomain().getCodeSource().getLocation().getPath();
        String decodedPath = URLDecoder.decode(path, "UTF-8");
    }
}

但在Kotlin中,主函数是在类之外定义的。如何获取它的当前文件名?

作为一种解决方法,将
main
方法放入伴生对象中。
此代码将显示与Java代码相同的路径:

class ExKt {
  companion object {
    @JvmStatic fun main(args: Array<String>) {
        val path = ExKt::class.java.protectionDomain.codeSource.location.path
        println("Kotlin: " + path)
    }
  }
}
类ExKt{
伴星{
@JvmStatic fun main(args:Array){
val path=ExKt::class.java.protectionDomain.codeSource.location.path
println(“Kotlin:+路径)
}
}
}
解决方案是:

class Ex() {
    fun m() {
        var p2 = Ex::class.java.simpleName
        println("p2:${p2}")
    }
}

fun main(args: Array<String>) {
    Ex().m()
}
class Ex(){
乐趣m(){
var p2=Ex::class.java.simpleName
println(“p2:${p2}”)
}
}
趣味主线(args:Array){
Ex().m()
}

您想实现什么?这是否等同于在C语言中获得argv[0]呢?这段代码很好地解决了您的问题,但它并不是您最初问题的答案。此代码返回Java类的名称,而不是编译它的文件的名称。同意@yole,此外,您可以直接从
main
调用
Ex::class.Java.simpleName
,创建
Ex
实例在这里没有意义。