Страницы

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

четверг, 5 декабря 2019 г.

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

#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

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

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