Object: 所有类的基类,需要进行强制转
换。但如果转换错误,只有在运行时才会抛出异常。
泛型T: 可以限定任何类型,在编译时就可以检查。
不需要进行强制转化。
例:
对于List<T>
,本身是个泛型,而将类型限定为Object
,即List<Object>
,
可以放任意类型,但在
取出元素的时候需要强制转换
;如果限定为String类型,则不需要强制转换
?: 可以接收不确定的类型,和Object类似,但可以缩小范围:? extends A
,这样就只能接收A类的子类。