【发布时间】:2018-12-06 13:19:41
【问题描述】:
我有一个完全用 Kotlin 编写的库,包括它的公共 API。现在库的用户使用 Java,这里的问题是返回类型为 Unit 的 Kotlin 函数未编译为返回类型 void。效果是 Java 端必须始终为有效无效的方法返回 Unit.INSTANCE。可以通过某种方式避免这种情况吗?
例子:
Kotlin 界面
interface Foo{
fun bar()
}
Java 实现
class FooImpl implements Foo{
// should be public void bar()
public Unit bar(){
return Unit.INSTANCE
// ^^ implementations should not be forced to return anything
}
}
是否可以以不同的方式声明 Kotlin 函数,以便编译器生成 void 或 Void 方法?
【问题讨论】:
-
改成 public void bar() {} 就可以了
-
奇怪,他们的文档 (kotlinlang.org/docs/reference/java-to-kotlin-interop.html) 建议它应该生成为 void。