Kotlin 函数类型在运行时的 Java 类型是什么?

迪尔万

如果我有下面的 Kotlin 方法并从 Java 调用它,那么我在 Java 中得到的返回类型是什么?

fun ff(): (Int, Int) -> Int {
    return { x, y -> x + y }
}
热键

Kotlin 函数类型(T1, ..., TN) -> RFunctionN<T1, ..., TN, R>Kotlin 运行时类型表示

有一个规范文档描述了当前状态下语言设计的这一方面。

它特别说明了 JVM 的 Kotlin 运行时中有 23 种函数类型 from Function0to Function22(作为kotlin-runtime库提供),如下所示:

package kotlin.jvm.functions

interface Function1<in P1, out R> : kotlin.Function<R> {
    fun invoke(p1: P1): R
}

扩展函数类型TR.(T1, ..., TN) -> R具有与普通函数类型相同的运行时表示,其中接收器预置在参数列表中,即(TR, T1, ..., TN) -> R.

具有超过 22 个参数的函数在运行时由单一类型表示:

package kotlin.jvm.functions

interface FunctionN<out R> : kotlin.Function<R> {
    val arity: Int
    fun invokeVararg(vararg p: Any?): R
}

在 Kotlin/JS 中,函数值以 JS 自然的方式表示,即它们被编译为函数定义和对它的引用:

function main$lambda(s1, s2) {
    println(s1 + s2);
    return Unit;
}

function main(args) {
    var f = main$lambda;
    /* ... */
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中,为什么在运行时没有通用类型信息?

来自分类Dev

如何在运行时知道ResultSet列类型的兼容Java类型?

来自分类Dev

是否可以在运行时访问Java 8类型信息?

来自分类Dev

如何在运行时同时检查'instanceof'和Java对象的泛型类型?

来自分类Dev

在运行时确定字符串中Java表达式的返回类型

来自分类Dev

Java创建带有在运行时获取的类型参数的泛型实例

来自分类Dev

Java创建带有在运行时获取的类型参数的泛型实例

来自分类常见问题

为什么Kotlin集合的运行时类是Java类?

来自分类Dev

就是Java泛型代码在运行时复制所使用的各类型或Java使用的类型转换?

来自分类Dev

在运行时转换类型数组

来自分类Dev

在运行时获取输入类型

来自分类Dev

在运行时定义的类型的列表

来自分类Dev

为什么Java在运行时需要classpath

来自分类Dev

在运行时确定或访问类型变量的具体类型

来自分类Dev

在运行时确定或访问类型变量的具体类型

来自分类Dev

在运行时加载jar文件java.lang.NoClassDefFoundError:kotlin / jvm / internal / markers / KMappedMarker

来自分类Dev

Java 中的 CustomListAdapter 和 kotlin 中的 MainActivity 在运行时出错

来自分类Dev

如何在运行时获取虚拟函数的指针的确切类型?

来自分类Dev

缺少类型多数民众赞成的模板函数(在运行时未使用)

来自分类Dev

是否可以在运行时在SBCL / Common Lisp中检查/获取函数类型或其签名?

来自分类Dev

如何在运行时使用已知类型调用函数

来自分类Dev

在运行时在Elixir中选择方法(函数指针类型)

来自分类Dev

如何编写在运行时确定返回类型的函数(基于参数的值?)

来自分类Dev

在运行时使用默认构造函数实例化类型参数化的类

来自分类Dev

Java 8中'()-> {}'的类型是什么?

来自分类Dev

“ Java编程语言类型”的定义是什么

来自分类Dev

运行时之前的 Java 未知子类型

来自分类Dev

Python何时无法在运行时确定对象的类型?

来自分类Dev

如何在运行时检查类型?

Related 相关文章

  1. 1

    在Java中,为什么在运行时没有通用类型信息?

  2. 2

    如何在运行时知道ResultSet列类型的兼容Java类型?

  3. 3

    是否可以在运行时访问Java 8类型信息?

  4. 4

    如何在运行时同时检查'instanceof'和Java对象的泛型类型?

  5. 5

    在运行时确定字符串中Java表达式的返回类型

  6. 6

    Java创建带有在运行时获取的类型参数的泛型实例

  7. 7

    Java创建带有在运行时获取的类型参数的泛型实例

  8. 8

    为什么Kotlin集合的运行时类是Java类?

  9. 9

    就是Java泛型代码在运行时复制所使用的各类型或Java使用的类型转换?

  10. 10

    在运行时转换类型数组

  11. 11

    在运行时获取输入类型

  12. 12

    在运行时定义的类型的列表

  13. 13

    为什么Java在运行时需要classpath

  14. 14

    在运行时确定或访问类型变量的具体类型

  15. 15

    在运行时确定或访问类型变量的具体类型

  16. 16

    在运行时加载jar文件java.lang.NoClassDefFoundError:kotlin / jvm / internal / markers / KMappedMarker

  17. 17

    Java 中的 CustomListAdapter 和 kotlin 中的 MainActivity 在运行时出错

  18. 18

    如何在运行时获取虚拟函数的指针的确切类型?

  19. 19

    缺少类型多数民众赞成的模板函数(在运行时未使用)

  20. 20

    是否可以在运行时在SBCL / Common Lisp中检查/获取函数类型或其签名?

  21. 21

    如何在运行时使用已知类型调用函数

  22. 22

    在运行时在Elixir中选择方法(函数指针类型)

  23. 23

    如何编写在运行时确定返回类型的函数(基于参数的值?)

  24. 24

    在运行时使用默认构造函数实例化类型参数化的类

  25. 25

    Java 8中'()-> {}'的类型是什么?

  26. 26

    “ Java编程语言类型”的定义是什么

  27. 27

    运行时之前的 Java 未知子类型

  28. 28

    Python何时无法在运行时确定对象的类型?

  29. 29

    如何在运行时检查类型?

热门标签

归档