关于Java泛型以及泛型存不存在父子类关系的个人理解

关于Java泛型以及泛型存不存在父子类关系的个人理解

1、泛型是在JDK1.5引进的语言特性,泛型通过一种类型或方法操纵各种类型的对象,同时又提供了编译时的类型安全保证。(个人的理解是就是把对象的类型在操作之前给确定了,避免出现不同类型对象之间的指向错误,像Java基本数据类型double与float转换要加类型转换,不然要出错,但是泛型针对的是对象实例)

2、 泛型技术的基本思想是类和方法的泛化,是通过参数实现的,因此泛型又被称作参数化类型,即通过定义含有一个或多个类型的类或接口,使得程序员可以对具有类似的特征与行为的类进行抽象。(对同一个类型的许多实例或同一个类型的接口进行操作)

3、
①. 在Java中,父类的变量可以指向子类的对象,子类可以认为是与父类兼容的类型,如下面代码

 Object a = new Object();
 Integer b = new Integer(10);
 a = b;  //父变量指向子对象

②. 对于泛型来说:可以使用一个父类作为类型参数调用泛型,在对参数化类的访问中使用该父类的子类对象,代码如下(假定有个Number类型的B类):

B <Number> b= new B<Number>();
b.add(new Integer(10)); 
b.add(new  Double(10.1));

泛型也是同样适用,但是泛型这种到底存不存在父子关系呢?这不是证明了是父子关系了,但还是有问题的,假设Java中允许List <String> 是 List <Object>的子类,代码如下:

List <String> ls = new Arraylist <String>();//ls存放的是具有类型的对象
List <Object> lo = new ls;
lo.add(new Object());
String s =ls.get(0);

但是最后一行代码是不符合Java机制的,由于通过lo可以将Object 对象放入列表,从而出现通过String类型变量ls访问到Object对象情况,即ls.get(0)返回对象类型是Object的。String类型的变量s是不能够指向Object对象的,String类型要比Object弱。所以说假设是不成立的。

总结一下就是: 调用泛型的实参类型之间可以有有父子关系,调用后得到的参数化类型之间不会具有同样的父子关系。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值