如何声明返回类型为';无效';对于java调用程序?

如何声明返回类型为';无效';对于java调用程序?,java,kotlin,Java,Kotlin,我有一个完全用Kotlin编写的库,包括它的公共API。现在库的用户使用Java,这里的问题是返回类型为Unit的Kotlin函数没有编译为返回类型void。其效果是Java端必须始终为有效无效的方法返回Unit.INSTANCE。这能以某种方式避免吗 例如: Kotlin接口 Java实现 是否可以以不同的方式声明Kotlin函数,以便编译器生成void或void方法 无论是Void还是Void都有效,您只需跳过单元 Kotlin接口: interface Demo { fun demoi

我有一个完全用Kotlin编写的库,包括它的公共API。现在库的用户使用Java,这里的问题是返回类型为
Unit
的Kotlin函数没有编译为返回类型
void
。其效果是Java端必须始终为有效无效的方法返回Unit.INSTANCE。这能以某种方式避免吗

例如:

Kotlin接口

Java实现


是否可以以不同的方式声明Kotlin函数,以便编译器生成
void
void
方法

无论是
Void
还是
Void
都有效,您只需跳过
单元

Kotlin接口:

interface Demo {
  fun demoingVoid() : Void?
  fun demoingvoid()
}
class DemoClass implements Demo {

    @Override
    public Void demoingVoid() {
        return null; // but if I got you correctly you rather want to omit such return values... so lookup the next instead...
    }

    @Override
    public void demoingvoid() { // no Unit required...

    }
}
实现该接口的Java类:

interface Demo {
  fun demoingVoid() : Void?
  fun demoingvoid()
}
class DemoClass implements Demo {

    @Override
    public Void demoingVoid() {
        return null; // but if I got you correctly you rather want to omit such return values... so lookup the next instead...
    }

    @Override
    public void demoingvoid() { // no Unit required...

    }
}
请注意,虽然没有真正提到它,但它确实:

此类型对应于Java中的
void
类型

正如我们所知,以下两个是等效的:

fun demo() : Unit { }
fun demo() { }

我使用java接口在此基础上实现了一个简单的变体

---在ACallback.java中--

例如:

override fun doInBackground(vararg params: Void?):Void{
    for (i in 0 until 10) {

        Thread.sleep(1000);
    }

    return null as Void;

}

更改为public void bar(){}并且它只是workadd,他们的文档()建议它应该作为void生成。相关讨论:感谢您的回答!也许你对这种情况也有一个想法:虽然这段代码可以解决这个问题,但它确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,而这些人可能不知道您的代码建议的原因
fun dostuff( arg: String , callback: ACallback<String> ) { 
   stuff();
   callback(arg) ; // yes 'invoke' from java 
}
  doStuff( "stuff" , ( String arg) -> voidReturningFunction( arg ) ) ;
override fun doInBackground(vararg params: Void?):Void{
    for (i in 0 until 10) {

        Thread.sleep(1000);
    }

    return null as Void;

}