假设存在以下Java类:
public class Test {
static class Builder<B extends Builder<B>>{
B asBuilder() {
return (B) this;
}
}
public static <B extends Builder<B>> B newBuilder() {
return new Builder<B>().asBuilder();
}
}
尝试在使用中的Kotlin代码中调用Test.newBuilder()
会产生错误Type expected
。
Test.newBuilder<>()
有相同的问题。 Test.newBuilder<Test.Builder>()
给出错误:One type argument expected for class Builder<B : Test.Builder<B!>!>
。由于类型参数是递归调用,因此无法以上述方式解决。
我认为,即使从Java角度来看,这也是一个相当奇怪的行为。奇怪的是,甚至允许以当前形式使用Test类代码。不幸的是,以上是我无法控制的另一个类的简化版本。实际上,我正在尝试
org.apache.logging.log4j.core.layout.GelfLayout.newBuilder()