Как реализовать универсальный интерфейс, чей универсальный шаблон расширяет другой интерфейс? - PullRequest
0 голосов
/ 20 мая 2019

Рассмотрим следующие сценарии:

public interface WinningBatches<X> {
    Collection<X> getBatches();
}

public interface SubBatches<Y, Z extends WinningBatches<Y>> {
    Collection<Z> getGoals(Collection<Y> var);

    void submitTask(Z var);
}

Хочу реализовать интерфейс SubBatches?

Я поступил следующим образом:

public class TotalBatches implements SubBatches<String, String extends WinningBatches<(What to write here?)>> {
    // override the methods of SubBatches.
}

Я не могу понять, как реализовать SubBatches ...

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Вам необходимо указать тип Z в расширении SubBatches<Y, Z extends WinningBatches<Y>> или оставить его как универсальный в TotalBatches.

Кроме того, спецификация типа, такая как <T extends U>, должна быть объявлена ​​новым интерфейсом, а не расширяемым интерфейсом.

Вот 3 примера, которые должны решить вашу проблему:

// 1. Without specifying Z
public interface TotalBatches<Z extends WinningBatches<String>> extends SubBatches<String, Z> { }

// 2. Specifying Z   
public interface TotalBatches extends SubBatches<String, WinningBatches<String>> { }

// 3. Using custom extension of WinningBatches   
public interface StringWinningBatches extends WinningBatches<String> { }
public interface TotalBatches extends SubBatches<String, StringWinningBatches> { }
0 голосов
/ 20 мая 2019
  1. Вы можете заменить String extends WinningBatches<(What to write here?)> на WinningBatches<String>

    interface TotalBatches extends SubBatches<String, WinningBatches<String>> {
        // override the methods of SubBatches.
    }
    
  2. Или реализовать WinningBatches и использовать его

    class StringWinningBatches implements WinningBatches<String> {
        @Override
        public Collection<String> getBatches() {
            return null;
        }
    }
    
    interface TotalBatches extends SubBatches<String, StringWinningBatches> {
        // override the methods of SubBatches.
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...