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