博为峰Java技术题 ——JavaSE 泛型Ⅱ

博为峰小博老师:

[getClass()相同]

看一段代码:

运行结果为:

这意味着,泛型是什么并不会对一个对象实例是什么类型的造成影响,所以,通过改变泛型的方式试图定义不同的重载方法也是不可以的:

博为峰Java技术题 ——JavaSE 泛型Ⅱ_第1张图片

[尽量使用精确的类型定义泛型]

尽量使用精确的类型定义泛型,除非必要,否则不要写一个接口或者父类上去:

博为峰Java技术题 ——JavaSE 泛型Ⅱ_第2张图片

就像这样,list中的是一个Number类型,往里面添加的是Integer与Double,这样导致get出来的元素也都是Number类型的,失去了子类扩展的功能。如果要让子类变为Interger和Double也可以,(Integer)list.get(0)和(Double)list.get(1)强转就可以了,但是这样不就失去了泛型的意义了吗?所以,尽量用精确的类型去定义泛型。

你可能感兴趣的:(博为峰Java技术题 ——JavaSE 泛型Ⅱ)