#java #class #generics #types #parameters
#java #класс #общие классы #типы #параметры
Вопрос:
Почему следующий код не выдает ошибку / исключение?
public class UserGenerics <T>
{
T obj;
public UserGenerics(T obj) {
this.obj = obj;
}
}
class UserGenericsRunner
{
public static void main(String[] args) {
UserGenerics<Integer> ug1 = new UserGenerics("StringObject");
UserGenerics ug2 = new UserGenerics(23);
}
}
Во время первого создания объекта параметр типа передается как целое число, но объект, передаваемый конструктору, является строковым объектом
Ответ №1:
Это потому, что вы создаете экземпляр необработанного типа.
Вы должны изменить
UserGenerics<Integer> ug1 = new UserGenerics("StringObject");
Для
UserGenerics<Integer> ug1 = new UserGenerics<>("StringObject");
или
UserGenerics<Integer> ug1 = new UserGenerics<String>("StringObject");
и компилятор выдаст ошибку компиляции.