Как написать и использовать параметризованный интерфейс, java

Рейтинг: -2Ответов: 1Опубликовано: 28.07.2023

У меня есть класс CalculationNumber, от него наследуются RealNumber, ComplexNumber. Для каждого класса у меня написан класс, который реализует сложение объектов этого класса:

public class SumRealNumber implements Sum{
public RealNumber sum(List<RealNumber> numbers) {
    RealNumber sum = new RealNumber(0.0);
    for (RealNumber number : numbers) {
        sum.number += number.number;
    }
    return sum;
}}

public class SumComplexNumber implements Sum {
public ComplexNumber sumComplexNumber(List<ComplexNumber> complexNumbers) {
    ComplexNumber sum = new ComplexNumber(0.0, 0.0);
    for (ComplexNumber complexNumber : complexNumbers) {
        sum.validPart += complexNumber.validPart;
        sum.imagePart += complexNumber.imagePart;
    }
    return sum;
}}

Я хочу написать параметризованный интерфейс Sum, который будет реализовывать метод сложения, и применить этот интерфейс к классам SumComplexNumber и SumrealNumber, но запуталась с параметризацией. Код интерфейса:

public interface Sum <T extends CalculationNumber> {
T sum(List<T> numbers);}

У меня не получается переписать под него классы со сложением. Подскажите, пожалуйста, правильно ли я написала код интерфейса и как правильно применить его к моим классам?

Ответы

▲ 0Принят

Просто указываете тип числа в имплементации интерфейса Sum:

public class SumRealNumber implements Sum<RealNumber> {
    @Override
    public RealNumber sum(List<RealNumber> list) {
        // ... сумма вещественных чисел
    }
}
public class SumComplexNumber implements Sum<ComplexNumber> {
    @Override
    public ComplexNumber sum(List<ComplexNumber> list) {
        // ... сумма комплексных чисел
    }
}