Реализация интерфейса kotlin в java

Итак, после этого вопроса, в котором я в основном использует отражение для передачи примитивных ссылок для модификации самого примитива, например:

_begin("Another Window", ::showAnotherWindow)

Я искал что-то, чтобы сделать что-то подобное возможно также из java, где на данный момент я использую примитивные массивы равнин:

 private boolean[] showAnotherWindow = {false}; imgui.begin("Another Window", showAnotherWindow); 

@hotkey предложила мне создать класс, реализующий интерфейс KMutableProperty0 и который автоматически получает и устанавливает соответствующую переменную

Пример:

 KMutableProperty0<Boolean> prop = PropUtils.javaProp(this, t -> t.showAnotherWindow, (t, r) -> { t.showAnotherWindow = r; }); _begin("Another Window", prop); 

Итак, я хотел попробовать попробовать и реализовать в java следующее.

Геттер :

 @FunctionalInterface public interface Getter<T> { T get(); } 

Сеттер :

 @FunctionalInterface public interface Setter<T> { void set(T type); } 

И тогда сам класс (я просто написал конструктор, все методы – это те, которые запрашиваются интерфейсом и автоматически реализуемые средой IDE):

 public class JavaProp <T> implements KMutableProperty0<T> { private imgui.Getter<T> getter; private imgui.Setter<T> setter; public JavaProp(imgui.Getter<T> getter, imgui.Setter<T> setter) { this.getter = getter; this.setter = setter; } @Override public void set(T t) { setter.set(t); } @NotNull @Override public Setter<T> getSetter() { return null; } @Override public T get() { return getter.get(); } @Nullable @Override public Object getDelegate() { return null; } @NotNull @Override public Getter<T> getGetter() { return null; } @Override public T invoke() { return null; } @Override public boolean isLateinit() { return false; } @Override public boolean isConst() { return false; } @NotNull @Override public String getName() { return null; } @NotNull @Override public List<KParameter> getParameters() { return null; } @NotNull @Override public KType getReturnType() { return null; } @NotNull @Override public List<KTypeParameter> getTypeParameters() { return null; } @Override public T call(Object... objects) { return null; } @Override public T callBy(Map<KParameter, ?> map) { return null; } @Nullable @Override public KVisibility getVisibility() { return null; } @Override public boolean isFinal() { return false; } @Override public boolean isOpen() { return false; } @Override public boolean isAbstract() { return false; } @NotNull @Override public List<Annotation> getAnnotations() { return null; } } 

Но всякий раз, когда я пытаюсь запустить это, я получаю следующее:

Ошибка: (45, 12) java: ссылка на Getter неоднозначна

оба интерфейса kotlin.reflect.KProperty0.Getter в kotlin.reflect.KProperty0 и интерфейс kotlin.reflect.KProperty.Getter в kotlin.reflect.KСоответствие свойства

Проблемная функция такова:

  @NotNull @Override public Getter<T> getGetter() { return null; } 

И соответствующий файл kotlin.reflect.KProperty.tk , вы можете найти его здесь

Любая идея, как я могу ее решить?

Просто укажите, какой интерфейс вы имеете в виду:

 public KProperty0.Getter<T> getGetter() 

Но я предпочел бы реализовать класс в Котлине и использовать его только на Java.