Работа с универсальными типами в Java(сравнение и суммирование с использованием одного типа)

Я искал ответ на сложный вопрос в моем первом курсе java, в частности, мне нужно сделать программу, способную как суммировать элементы в общем списке, так и находить самое высокое и самое низкое в списке.

Я вполне способен выполнить обе эти задачи по отдельности, имея T(универсальный тип), расширение Number для суммирования и Comparable для сравнения. Проблема возникает, когда я пытаюсь выполнить обе задачи для одного и того же универсального типа, видя, что Java неспособна к множественному наследованию.

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

Фрагменты кода и советы приветствуются!

1 ответ

T extends Number & Comparable<T> должен сделать это. T extends Number & Comparable<? super T> немного более общий.

Java поддерживает "множественное наследование интерфейса" (и, возможно, несколько странное множественное наследование реализации "в Java SE 8.) Класс расширяет еще один класс и может реализовывать множество интерфейсов.

(Не уверен если java.lang.Number это то, что вы хотите для суммирования. Возможно, вы захотите представить свой собственный тип по аналогии с Comparator.)

Другие вопросы по тегам