#java #generics
У меня есть Generic: public class Gen{ private T value; public T getValue() { return value; } } и какой-то метод: public void someMethod(Gen gen) { System.out.println(gen.getValue()); } Будет ли какая-то разница, если параметр метода someMethod будет иметь тип Gen вместо Gen? Я понимаю, что метасимвольный аргумент может делать extends или super. Я правильно понял, что Gen это способ решения проблем унаследованного кода?
Ответы
Ответ 1
В данном случае разницы нет. Разница существовала бы, если бы в классе Gen был метод, принимающий T: public void setValue(T value) { this.value = value; } На Gen setValue выполнить можно, а на Gen — нельзя. Подстановочный параметр (wildcard) используется для установки ограничений на использование generic-класса. Методы, которые можно выполнить с классом Gen, можно выполнить для любого Genбез ошибок приведения типов. Подробнее: Java Language Specification Tutorial: Wildcards Stackoverflow: Difference between an unbound wildcard and a raw type
Комментариев нет:
Отправить комментарий