скажем, что у меня есть несколько подклассов Creature
, и каждый из них имеет какой-то метод getGroup()
, который возвращает List<Creature>
.Java: Как написать общий метод?
Что я могу сказать по «что-то вроде».getGroup()
Метод заключается в том, что имя этой функции варьируется между подклассами. Например, Wolf
s путешествуют в пакетах, поэтому у них есть член getPack()
. Fish
путешествия в школах, поэтому у них есть член .getSchool()
, Humans
есть член getFamily()
и т. Д.
.getGroup()
не существует в Creature
, и его нельзя добавить в интерфейс. Ни один из этих разделов не может быть отредактирован.
Я пишу метод для печати числа Creature
s в своей группе. Как мне это сделать?
По существу, я ищу, чтобы уплотнить эти две функции в одно и то же:
public void PrintSchoolSize(Fish dory) {
System.out.print(dory.getSchool().size());
}
public void PrintHiveSize(Bee bee) {
System.out.print(bee.getColony().size());
}
... в следующей функции:
public void printGroupSize(Class<? extends Creature> cree,
FunctionThatReturnsList getGroup()) {
System.out.print(cree.getGroup().size();
}
Я предположил бы, что мне нужно пройти во втором аргументе (указатель функции?) до void printGroupSize
. Любая помощь очень ценится, спасибо!
EDIT Спасибо всем за помощь. Это просто упрощение проблемы real, которую я пытаюсь решить. Длинные, слишком сложные проблемы сложнее ответить, поэтому я поставил этот более простой сценарий.
Единственный ответ заключается в использовании общей функции (если она существует). В классах, на которых я фактически работаю, нет общего интерфейса, но у всех есть функция, которая возвращает список.
Вы должны сделать способ в «Существо», который они все переопределяют. – immibis
'.getGroup() не существует в Существо, и его нельзя добавить в интерфейс' почему? Тогда что такое * * интерфейс? – EpicPandaForce
Спасибо за помощь. К сожалению для меня, @Override не вариант. Вопрос, который я задал, - это просто упрощенное упрощение большей проблемы, которую я пытаюсь решить. Наиболее оптимальное решение основывается на общих функциях –