Предполагается, что существует следующий класс 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();
}
}
При попытке вызвать Test.newBuilder()
в коде-потребителе Kotlin выдает ошибку 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()