Страницы

Поиск по вопросам

четверг, 11 октября 2018 г.

Java Generics. В чем разница Gen и Gen

У меня есть 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 это способ решения проблем унаследованного кода?


Ответ

В данном случае разницы нет.
Разница существовала бы, если бы в классе 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

Комментариев нет:

Отправить комментарий