gpt4 book ai didi

java - 从 Java(或 scala)调用具有类型参数的 Ceylon 顶级函数

转载 作者:行者123 更新时间:2023-12-01 07:48:48 25 4
gpt4 key购买 nike

shared T f<T>(T t){
return t;
}

我期待类似的事情

mod.f_.f[Integer](1)

在 scala 中工作,其中 [Integer] 是类型参数。但它不接受类型参数。

为什么 scala 看到的是 getter 而不是函数

shared Integer(Integer) fi = f<Integer>;

我预计 整数(整数)足以告诉编译器将函数公开给 scala。

最佳答案

我不懂 Scala,所以我只能帮助解决 Java 部分,但以下是从 Java 调用该函数的方法:

f_.f(Integer.$TypeDescriptor$, Integer.instance(1))

或者:

f_.<Integer>f(Integer.$TypeDescriptor$, Integer.instance(1))

Ceylon 具有具体化的泛型,因此类型参数变成常规参数,并且您必须提供类型参数的类型描述符对象。 Ceylon 类和接口(interface)有一个静态 $TypeDescriptor$ 成员,您可以使用它;我不知道其他东西(Java 类、联合和交集类型等)是如何工作的,但您可以在 Ceylon 中编写等效的调用,并通过使用 编译生成的 Java 代码--verbose=代码

这是一个完整的工作示例,其中包含您的 f 函数和调用它的 Java 类 G:gist

关于java - 从 Java(或 scala)调用具有类型参数的 Ceylon 顶级函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43449732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com