Метасимвольный аргумент >. Зачем он нужен?
Подскажите,зачем аргумент <?>, зачем он нужен?
Часто в книгах приводится такой пример -в методе 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();
}
}