有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

kotlin什么是java。构造器。单()?

我正在学习Kotlin如何评估脚本,我在BasicJvmScriptEvaluator中看到了如下代码:

    val ctor = java.constructors.single()

    val saveClassLoader = Thread.currentThread().contextClassLoader
    Thread.currentThread().contextClassLoader = this.java.classLoader
    return try {
        ctor.newInstance(*args.toArray())
    } finally {
        Thread.currentThread().contextClassLoader = saveClassLoader
    }

我不理解代码java.constructors.single(),没有名为java的包。构造器。我应该如何理解此代码


共 (1) 个答案

  1. # 1 楼答案

    重要的是要意识到你在extension function操作^{}的实例。返回{cd2}的调用{cd2}。然后constructorsClass中获取一个Constructor数组,并且single()获取该数组中的一个(并且只有一个,否则会引发异常)元素

    如果将代码展开为多行,可能更容易看到发生了什么:

    val clazz: java.lang.Class = this.java // 'this' is an instance of kotlin.reflect.KClass
    val ctors: kotlin.Array<Constructor> = clazz.constructors
    val ctor: java.lang.reflect.Constructor = ctors.single()
    

    single()函数是an extension function defined on ^{} (and other types)