Почему Java предоставила Unbounded wild card, если мы сможем решить проблему, используя Generic type. НапримерВ чем разница между использованием Unbounded wild card и типа Generic в Java?
class UnBoundedUsage {
//Method 1
public static void unboundedMethod(List<?> list) {
for(Object obj : list) {
System.out.println(obj);
}
}
//Method 2
public static <T> void methodWithType(List<T> list) {
for(T obj : list) {
System.out.println(obj);
}
}
}
Может кто-нибудь, пожалуйста, помогите мне понять, если метод 2 может решить наши требования, то почему мы должны иметь метод 1. Средство, проблема которого может быть решена с помощью неограниченного подстановочного знака и которая не может быть решена с использованием метода общего типа (например, метода 2)?
Вы можете добавить элементы в 'list' в методе 2; вы не можете в методе 1. –
Спасибо @AndyTurner, но если добавление элемента является единственной проблемой, мы можем изменить его ниже кода snippet public static void methodWithType (Список super T>)) { для (Object obj: list) { System.out.println (obj); } } –
MishraJi
Это не единственная проблема; это всего лишь пример проблемы, в которой переменная типа предоставляет достаточную информацию, чтобы компилятор мог гарантировать безопасность. –