Работа с универсальными типами в 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
.)