通配符<?>
个人理解,<?>可用于需要泛型,但又不访问泛型对象的场景:
业务中遇到这种场景:如声明一个方法,用于处理对不同泛型类某些属性的修改,而目标属性不涉及泛型类操作,只是为了传入该泛型对象,此时入参我选择使用泛型<?>:
声明
public void execute(SomeAbstractClass<?>)
其中并没有对?所代表的对象进行任何操作,而是用到了SomeAbstractClass的公共方法
使用
SomeAbstractClass<Generic1> class1 = new SomeAbstractClass<>(generic1Obj)
SomeAbstractClass<Generic2> class2 = new SomeAbstractClass<>(generic1Ob2)
execute(class1)
execute(class2)
上界限定通配符<? extends T>
对应生产者
Generic<? extends T> producer
常用于
T obj = producer.get()
下界限定通配符<? super T>
对应消费者
Generic<? super T> consumer
常用于
T newObj = new T()
consumer.addObj(newObj)
标签:execute,PECS,Java,0.0,SomeAbstractClass,通配符,泛型,new
From: https://www.cnblogs.com/Julymay/p/16652936.html