Вы неправильно понимаете, как числа работают в Java. Класс Number
является суперклассом числовых классов-оболочек (Integer
, Float
и т. Д.), Полезных для представления примитивных типов (int
, float
и т. Д.) В качестве объектов, но он делает не работа с обычными арифметическими операторами.
Если вы намереваетесь использовать арифметические операторы, то используйте примитивные типы. Если вам нужно создать «универсальный» метод, который работает для всех числовых типов данных, у вас нет другого выбора, кроме как создать несколько перегруженных версий одного и того же метода, по одной для каждого типа данных, например:
public float[] average(float[][] queue) {...}
public double[] average(double[][] queue) {...}
Также имейте в виду, что такой код появляется для работы с типами упаковщиков:
Integer i = 0;
i += 1;
System.out.println(i);
... Но под капотом Java автоматически упаковывает и распаковывает Integer
, поскольку оператор +=
работает только для примитивных типов. Это работает, потому что мы явно указываем, что число является Integer
, но оно не будет работать для Number
, так как Java должна точно знать , с каким типом номера он имеет дело для выполнения бокс / распаковка.