У меня есть метод Java, который я пытаюсь сделать универсальным, чтобы он мог принимать в качестве параметра список из двух разных типов объектов. (Простой пример показан ниже). Эти два разных объекта всегда будут иметь методы getDate() и getHour(). Код выглядит следующим образом:
public <T> List<T> getListOfStuff(List<T> statistics) {
List<T> resultList = new ArrayList<T>(statistics.size());
if(statistics.size() > 0){
resultList.add(statistics.get(0));
int date = Integer.parseInt(resultList.get(0).getDate());
int hour = Integer.parseInt(resultList.get(0).getHour());
}
return resultList;
}
Однако это не работает. Эти две строки не работают:
int date = Integer.parseInt(resultList.get(0).getDate());
int hour = Integer.parseInt(resultList.get(0).getHour());
Ошибки говорят: "Метод getDate() не определен для типа T" и "Метод getHour() не определен для типа T"
Он предлагает мне добавить приведение к приемнику метода, но он не позволяет мне использовать T и вместо этого навязывает мне имя объекта, как это, что не будет работать для меня:
int date = Integer.parseInt((ObjectName1)resultList.get(0).getDate());
int hour = Integer.parseInt((ObjectName1)resultList.get(0).getHour());
Есть ли способ сделать то, что я хочу здесь?
ObjectName1
? Это общий предок двух упомянутых вами типов или это один из типов, который имеет методыgetDate
иgetHour
? - person fps   schedule 11.05.2017ObjectName1
и его родственный класс? - person fps   schedule 12.05.2017ObjectName1
, так и (допустим)ObjectName2
? - person fps   schedule 12.05.2017