为什么第一次使用set()就可以,第二次添加就错误?泛型

问题如下,书上说不是不能给对象添加新信息吗?
为什么第一次添加可以成功,第二次就失败?
————————————————-——————————————————————————

img

不清楚书中所列的代码片段相关上下文代码,单纯从泛型与通配符的语法规则上没有发现有类似“只能赋值一次”的约束。
另外参考官网教程的说明:

It's important to note that List<Object> and List<?> are not the same. You can insert an Object, or any subtype of Object, into a List<Object>. But you can only insert null into a List<?>. 

指出使用通配符?声明的变量,在实际使用时只能写入null,也就是说系统不清楚通配符所指何物。
官网教程地址:https://docs.oracle.com/javase/tutorial/java/generics/unboundedWildcards.html
希望对你有所帮助。

所以setObj到底是个什么方法,里边是什么操作?

你需要去了解下泛型的上下限定
? 代表可以指向任意类型,如果没有明确,那么就是Object以及任意的Java类(向上转型是安全的,向下转型是不安全的),正因为这样才没法确定?是什么元素,它是指向父类还是子类,所以无法添加元素,只能接受null的传入。你这书是啥书啊?应该是写错了吧,gen1是可以赋值的,gen没法赋值