Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的Kotlin泛型错误_Java_Android_Generics_Kotlin_Kotlin Generics - Fatal编程技术网

Java中的Kotlin泛型错误

Java中的Kotlin泛型错误,java,android,generics,kotlin,kotlin-generics,Java,Android,Generics,Kotlin,Kotlin Generics,考虑到以下三种kotlin等级: abstract class UseCase<T> { fun execute(action: Action<T>) { } } class ConcreteUseCase : UseCase<List<String>>() class Action<T> 抽象类用例{ 乐趣执行(动作:动作){ } } 类ConcreteUseCase:UseCase() 集体诉讼 我无法用ja

考虑到以下三种kotlin等级:

abstract class UseCase<T> {
    fun execute(action: Action<T>) {
    }
}

class ConcreteUseCase : UseCase<List<String>>()

class Action<T>
抽象类用例{
乐趣执行(动作:动作){
}
}
类ConcreteUseCase:UseCase()
集体诉讼
我无法用java代码编译以下行:

ConcreteUseCase s = new ConcreteUseCase();
s.execute(new Action<List<String>>());//<<<<<<< compilation error
ConcreteUseCase s=新的ConcreteUseCase();

s、 执行(新操作())// 要在不接触Kotlin的情况下简单地修复Java代码,请执行以下操作:

public static void main(String[] args) {
    ConcreteUseCase s = new ConcreteUseCase();
    Action<List<? extends String>> listAction = new Action<>();
    s.execute(listAction);
}
这个方法不使用修饰符(
in
/
out
),您可以按预期调用该方法


还可以按照说明使用
@JvmSuppressWildcards

更改
具体用例,如下所示:

class ConcreteUseCase : UseCase<List<@JvmSuppressWildcards String>>()
classconcreteusecase:UseCase()

有关更多信息,请访问此

感谢您的深入了解。我喜欢你的回答。现在我将使用
@JvmSuppressWildcards
。很好的选择。问题是,似乎您的修复程序强制用户指定一个可变列表,这可能是不需要的。根本不是。只是用它来说明发生了什么。“你们可以保持列表不变,”我添加了一个例子
class ConcreteUseCase : UseCase<List<@JvmSuppressWildcards String>>()