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

博为峰小博老师:

[getClass()相同]

看一段代码:

运行结果为:

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 开发人员在使用泛型的时候,很容易根据自己的直觉而犯一些错误。比如一个方法如果接收List作为形式参数,那么如果尝试...
    时待吾阅读 1,072评论 0 3
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 2,021评论 0 3
  • 我们知道,使用变量之前要定义,定义一个变量时必须要指明它的数据类型,什么样的数据类型赋给什么样的值。 假如我们现在...
    今晚打肉山阅读 1,015评论 0 1
  • 我很心疼母亲,她是从生下来就一直在为别人活着。 母亲是家中老大,从小就肩负着老大的重担和义务,从来享受不到老大的好...
    玛格丽特MM阅读 351评论 1 2
  • 杰弗里摩尔提出过高科技产品生命周期的理论,分为五个阶段,一开始是那些技术的狂热追随者,然后产品就有一些早期使用者,...
    kafkaliu阅读 224评论 0 0