关于为什么泛型通配符作为方法参数即使实例化之后依然没法调用的原因其实还有重要的一点就是
如果你使用如下方法实例化一个Pair,你会发现set方法的形参类型全部变成了null,
Pair<? extends Integer> i = new Pair<>(123,123);
虽然从各种意义上看,i的类型已经是完全确定了的,你如果使用getclass方法去获得first参数的类型的时候,会很明确的得到一个Integer,也就是说此时在i内部已经完成了类型替换,但是由于方法的形参来自于擦拭法,这就使得形参类型完全无法确定。
Sign in to make a reply
藜
关于为什么泛型通配符作为方法参数即使实例化之后依然没法调用的原因其实还有重要的一点就是
如果你使用如下方法实例化一个Pair,你会发现set方法的形参类型全部变成了null,
虽然从各种意义上看,i的类型已经是完全确定了的,你如果使用getclass方法去获得first参数的类型的时候,会很明确的得到一个Integer,也就是说此时在i内部已经完成了类型替换,但是由于方法的形参来自于擦拭法,这就使得形参类型完全无法确定。