Метасимвольный аргумент . Зачем он нужен?

Подскажите,зачем аргумент <?>, зачем он нужен?

Часто в книгах приводится такой пример -в методе equals класса Mas.Аргументируя ,что если поставить <T>, то этот метод не сработает при разных наследниках Number. Это да, согласен. Но можно же просто сделать метод

  boolean equals(Mas  temp){

                return this.avar()==temp.avar();
            }

без <?>. И в аргументы мы сможет передать Mas, который всегда <T extends Number>

public class Arra {
        public static void main(String[] args) {
            Mas<Integer> mas1=new Mas<>(new Integer[]{1,2,3,4,5});
            Mas<Double> mas2=new Mas<>(new Double[]{1.1,2.0,3.0,4.0,5.0});
            System.out.println(mas1.equals(mas2));
        }
    }
    class Mas<T extends Number>{
        T [] value;

        public Mas(T[] value) {
            this.value = value;
        }
        int avar(){
            double summ=0;
            for (T temp: value) {
                summ+=temp.doubleValue();
            }
            return (int)(summ/value.length);
        }
        boolean equals(Mas <?> temp){

            return this.avar()==temp.avar();
        }
    }

Ответы (0 шт):