如何使Java上限通配符类型参数符合Kotlin?

问题描述

给予

public interface StubTransformer {
    AbstractStub<?> transform(String name,AbstractStub<?> stub);
}

public static <T extends AbstractStub<T>> T attachHeaders(T stub,Metadata extraHeaders) {...}

此Kotlin类无法编译。

class MetadataInjectingStubTransformer: StubTransformer {
    override fun transform(name: String,stub: AbstractStub<*>): AbstractStub<*> {
        val header = Metadata()
        return MetadataUtils.attachHeaders(stub,header)
    }
}

错误

Type parameter bound for T in 

fun <T : AbstractStub<T!>!> attachHeaders(stub: T!,extraHeaders: Metadata!): T!
is not satisfied: inferred type AbstractStub<*>! is not a subtype of AbstractStub<AbstractStub<*>!>!

但是可以强制编译Java版本。

public class MetadataInjectingStubTransformer implements StubTransformer {
    @Override
    @SuppressWarnings("unchecked")
    public AbstractStub<?> transform(String name,AbstractStub stub) {
        Metadata header = new Metadata();    
        return MetadataUtils.attachHeaders(stub,header);
    }
}

我们如何编译Kotlin代码?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...