Вызов из Kotlin a Java generi c метода, определенного с несколькими границами, одна граница сама является типом generi c - PullRequest
0 голосов
/ 23 апреля 2020

Я строю оператор Kubernetes в Kotlin и пытаюсь вызвать обобщенный метод c, который определен с несколькими границами. Сигнатура метода следующая:

<C extends Namespaceable<C> & KubernetesClient> LeaderElectorBuilder<C> leaderElector();

Исходный код можно найти здесь: https://github.com/fabric8io/kubernetes-client/blob/1150135f9febfd000396c031532efe5856037043/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/KubernetesClient.java#L427 -L433

Синтаксис множественных границ в Java позволяет определить несколько ограничений на тип, используемый в определении класса или метода generi c. См. https://www.tutorialspoint.com/java_generics/java_generics_multiple_bounds.htm

Я пытаюсь вызвать этот метод в Kotlin, но он не может определить тип, и ни одно из моих определений не принимается компилятором.

Если я это сделаю:

client.leaderElector()

Kotlin будет жаловаться на то, что " Недостаточно информации для вывода переменной типа C".

Любое явное Тип отклоняется, как правило:

client.leaderElector<KubernetesClient>()

Kotlin будет жаловаться, что " Аргумент типа находится за его пределами. Ожидаемый: Пространство имен ! Найдено: KubernetesClient!"

И наоборот (" Ожидается: KubernetesClient! Найдено: Пространство имен !"), если я использую Namespaceable<KubernetesClient> для явного типа.

Как правильно вызвать этот метод в Kotlin?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...