在循环Builder方案的情况下,参数化类型的类型推断

时间:2018-10-19 22:16:15

标签: kotlin

假设存在以下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()

0 个答案:

没有答案