Текущая ситуация:
- У меня есть 2 модуля maven
- модуль 1 в целом с интерфейсами
- модуль 2 с реализациями и имеет конкретный зависимость другого модуля maven module3 (внешний модуль проекта)
- модуль 2 имеет зависимость от module1
- модуль 1 не может иметь зависимости от module3
- В модуле 2 I есть метод, который реализует интерфейс, унаследованный от артефакта maven, который я не могу изменить
- Мне нужно предоставить интерфейс с подписью метода в модуле1, который я реализовал уже реализованным в модуле2, очевидно, чтобы иметь другая конкретная реализация для этой спецификации c сигнатура метода.
сигнатура метода, реализованная в модуле 2, выглядит так:
Class MyClass{
public <T extends Enum<T> & Interface1> Interface2 myMethod(param1, param2...){.....}
}
Интерфейс 1 и Интерфейс 2 являются частью модуля 3 (тот, который я не может быть изменен, и module1 не может иметь его в качестве зависимости)
Вопрос: как я могу создать интерфейс в модуле1, который будет реализован модулем формы MyClass 2 с необходимой сигнатурой метода?
Что-то вроде:
Module1:
interface MyInterface{
<T extends Enum<T> & -->What I should put here<--- > -->What I should put here<--- myMethod(param1, param2...){.....}
}
class MyClass implements MyInterface{
public <T extends Enum<T> & Interface1> Interface2 myMethod(param1, param2...){.....}
}
class MyClass2 implements MyInterface{
public <T extends Enum<T> & -->Different interface needed here than Interface1<-- > -->Different interface needed here than Interface2<-- myMethod(param1, param2...){.....}
}
Есть идеи? как я могу преодолеть интерфейсы, унаследованные от module3 (которые я не могу изменить и не могу иметь его как зависимость в модуле1, только в модуле2 я могу иметь его как зависимость) В основном, чтобы предоставить более общее определение сигнатуры метода интерфейса c в модуле1 чтобы удовлетворить сигнатуру метода в модуле2?
В настоящее время говорится: оба метода: метод интерфейса и метод, реализованный в классе, имеют одинаковое стирание, но ни один из них не отменяет другой.