У меня следующая структура классов:
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);
Я хочу изменить структуру своего класса, чтобы включить эту функцию. Как я могу это сделать?