Java 8 Невозможно реализовать два интерфейса из-за множественного наследования - PullRequest
0 голосов
/ 17 октября 2018

У меня есть два контракта (интерфейса), оба имеют метод по умолчанию с тем же именем, но с другим типом возврата.

Мне нужно создать класс, который должен реализовать оба контракта.Если я пытаюсь это сделать, то это дает мне ошибку компиляции.

Я не могу изменить метод по умолчанию Cotract1, так как многие классы реализуют Contract1 и то же самое с Contract2.

Есть ли в любом случае, с помощью которого я могу написать класс, который должен иметь реализацию обоих интерфейсов, не меняя ничего в интерфейсе.

Ниже приведен фрагмент кода:

interface Contract1 {
    default String getVersion() {
       return "Beta_10.2.3";
    }
    //....
}
interface Contract2 {
    default Double getVersion() {
        return 11.2;
    }
    //....
}
public class ContractsImplementation implements Contract1, Contract2{

}

1 Ответ

0 голосов
/ 17 октября 2018

Предложение:

Санджай, если вы не хотите, чтобы в вашем классе были такие методы по умолчанию, как вы сказал , используйте композицию вместо наследования.

interface Contract1 {
   default String getVersion() {
      return "Beta_10.2.3";
   }
   //....
}
interface Contract2 {
    default Double getVersion() {
        return 11.2;
    }
    //....
}
public class ContractsImp {

    private class Contract1Imp implements Contract1 {}
    private class Contract2Imp implements Contract2 {}

    private Contract1 contract1 = new Contract1Imp();
    private Contract2 contract2 = new Contract2Imp();
    // Here you can do with contracts whatever you want
    // ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...