在Kotlin中使用Java泛型-Java不需要特定的泛型,但是Kotlin确实需要

时间:2018-11-15 21:59:12

标签: java kotlin

我想从Kotlin代码中使用这个Java类。

class JavaDialogBuilder<B extends JavaDialogBuilder>

此Java代码可以正常编译:

void javaTest() {
    new JavaDialogBuilder();
}

不能将其转换为Kotlin等效代码。

fun javaTest() {
        JavaDialogBuilder() // <-- compilation error here
}

编译错误为:

Type inference failed: Not enough information to infer parameter B in 

constructor JavaDialogBuilder<B : (JavaDialogBuilder<JavaDialogBuilder<*>>..JavaDialogBuilder<out JavaDialogBuilder<*>>?)>
( )

Please specify it explicitly.

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:-1)

您可以创建Kotlin特定的子类

class KotlinDialogBuilder : JavaDialogBuilder<KotlinDialogBuilder>()

这不是理想的-是否可以在不创建额外子类的情况下做到这一点?