Ссылка на интерфейсМетод неоднозначнаJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ссылка на интерфейсМетод неоднозначна

Сообщение Anonymous »

У меня есть устаревший интерфейс, который выглядит так:

Код: Выделить всё

/** Never change *a line* of this or some angry monster will fall from the opening skies talking obscure reasons not to mess with this */
public interface IllFindStuffNoWorries {
STUFF findById(String id);
STUFF findById(Long id);
STUFF findById(UUID id);
... and so on
}
(Что довольно неудобно, так как я никогда не знаю, какой тип идентификатора он ожидает)
Но оказывается, что все ВЕЩИ проекта имеют метод getId(), который возвращает один из типов, которые готов обрабатывать связанный с реализацией IllFindStuffNoWorries.
Поэтому я ввел:

Код: Выделить всё

public interface IveGotId { ID getId(); }
Который теперь расширен всеми моими STUFF-ами, что позволяет мне представить:

Код: Выделить всё

public interface TypicalFinder {  //get it ? typical because types ... ha ha that sounded hilarious in my head ...
STUFF findById(ID id);
}
Итак, у меня был Something SomethingFinder, который я изменил:

Код: Выделить всё

/** Change as little as you can there  */
public class Something {
...
String getId(){ return id; }
...
}
public interface SomethingFinder extends IllFindStuffNoWorries {}
Кому:

Код: Выделить всё

/** Change as little as you can there  */
public class Something implements IveGotId {
...
@Override String getId(){ return id; }
...
}
public interface SomethingFinder extends IllFindStuffNoWorries, TypicalFinder {}
Хотя в Java 7 это было бы нормально (согласно многолетним воспоминаниям), компиляция с помощью java8(+?) дает мне следующее:
< pre class="lang-none Prettyprint-override">

Код: Выделить всё

/home/stackOverflowUserAr3s/projects/hot-mess/src/main/java/some/where/impl/SomethingFinderImpl.java:12:42
java: reference to findById is ambiguous
both method findById(ID)                in new.mess.TypicalFinder
and method findById(java.lang.String)  in old.mess.IllFindStuffNoWorries
match
Есть ли способ заставить это работать?

Пытаюсь ли я полагаться на устаревшее мышление?
Правда ли @FunctionalInterface - это своего рода путь в моем случае (только один метод, который меня интересует)?
Это интерфейсы, расширенные интерфейсом... Это не какое-то причудливое намерение множественных реализаций, то есть сочетание контрактов, которые удобно перекрываются и могут быть выполнены с помощью одной реализации.

Подробнее здесь: https://stackoverflow.com/questions/662 ... -ambiguous
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ошибка присвоения нескольких файлов C++: ссылка на «данные» неоднозначна
    Гость » » в форуме C++
    0 Ответы
    45 Просмотры
    Последнее сообщение Гость
  • «ссылка на «байт» неоднозначна», когда я пытаюсь использовать T Chart в своем C++ Builder
    Anonymous » » в форуме C++
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Ссылка на cout неоднозначна в C++ [дубликат]
    Anonymous » » в форуме C++
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Мощность данных неоднозначна: размеры x: 9000, 9000, 1926, 1926, размеры y: 9000, 9000, 1926, 1926. Убедитесь, что весь
    Anonymous » » в форуме Python
    0 Ответы
    149 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Python и Pandas — серия неоднозначна
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»