с данными 2 классами:
public class A{
public <T> Cell<T> f(Cell<T> l){
return null;
}
}
public class B extends A{
public <T> Cell<T> f(Cell<Cell<T>> l){ // trying to override
return null;
}
}
(когда Cell является неким универсальным классом).
Я понимаю, что после удаления типа классы выглядят следующим образом:
public class A{
public Cell f(Cell l){
return null;
}
}
public class B extends A{
public Cell f(Cell l){ // trying to override
return null;
}
}
До того, как я узнал, что такое стирание типов, я думаю, что я действительно понял, почему компилятор видит это как перегрузку.
, но теперь, когда я (думаю, что) я знаю о стирании типов, двасигнатуры методов одинаковы, и я действительно думаю, что имеет больше смысла в том, что компилятор увидит это как ПЕРЕГРУЗКУ.
после компиляции получил, что компилятор Java видел это как попытку ПЕРЕГРУЗИТЬ, а не переопределитьи выдает ошибку для перегрузки к методам с одинаковой сигнатурой.
мой вопрос : почему компилятор все еще видит в этом попытку ПЕРЕГРУЗКИ, а не ПЕРЕГРУЗКИ, хотя после стирания типа сигнатурыточно так же?
спасибо!