Java - Вернуть правильный тип из универсального метода

У меня следующая структура классов:

public class Team {
    ...
}

public class Event {

}

public abstract class Fixture<T extends Team> implements Event {
   ...
}

public abstract class Forecast<Event> {

}

public class MyPrediction<T extends Fixture<? extends Team>> extends Forecast<Fixture<? extends Team>>{

}

Я пытаюсь смоделировать спортивные события всех видов (т.е. «приспособление» предназначено для конкретной игры между двумя участниками, играющими друг против друга, тогда как «Событие» другого типа может иметь много участников) вместе с прогнозами исхода конкретных «Событий». У меня есть общий метод:

public <T> MyPrediction<Fixture<? extends Team>> getMyPrediction(Fixture<? extends Team> fixture) {

}

Я хочу иметь возможность возвращать экземпляр MyPrediction , который имеет универсальный тип аргумента fixture , но я не могу похоже, так и делают. Например, если я сделаю что-то вроде следующего, то получу ошибку компиляции:

SoccerFixture<EnglishSoccerTeams> soccerMatch = new ScoccerFixture<EnglishSoccerTeams>();
MyPrediction<SoccerFixture<EnglishSoccerTeams>> = getMyPrediction(soccerMatch);

Я хочу изменить структуру своего класса, чтобы включить эту функцию. Как я могу это сделать?

6
задан 15 January 2011 в 18:17
поделиться