我有一个完全用kotlin编写的库,包括它的公共api。现在库的用户使用java,这里的问题是kotlin函数的返回类型是 Unit
未编译为返回类型 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
方法?
3条答案
按热度按时间omqzjyyz1#
两者
Void
以及void
工作,你只需要跳过它Unit
...kotlin接口:
实现该接口的java类:
请注意,虽然kotlins参考指南“从java调用kotlin”并没有真正提到它,但是
Unit
文件包括:此类型对应于
void
键入java。正如我们所知,以下两个是等价的:
xiozqbni2#
例子:
wqlqzqxt3#
我使用java接口实现了一个简单的变体。
---在acallback.java中--
--在kotlin文件中
---在java中----