Java泛型机制产生warning记录的一点了解(1)

非同一实现类中,子类实现父类的泛型

先举一段代码

	//这里接口X的泛型类型为T,特定某一类对象
	interface X<T> {

}
	//实现父类X
	class XX<T> implements X<T>{
    
}

实现类XX实现了X父类,那么就必须指定泛型,
1、这里XX<T>表示的意思是任何new XX<?>()语法中?需要指定具体的T类型,同时XX和X都是泛型的同一类型,这里依赖的是实现类的特定类型
2、也可以擦除泛型,那么就直接new XX();不需要钻石操作符。

同一实现类中,子类实现父类的泛型

先举一段代码

class A<T>{
	在classA中的接口X和其实现类XX
    interface X<T> {

    }
	//这里XX<T>将会泛型覆盖父类的类型
    class XX<T> implements X<T>{

    }
}

在这里插入图片描述

为什么这里会出现这么个类型覆盖呢?

原因是这样的:

X和XX均是在类型A的内部类,而A本身也是指定了泛型T,你实现类也写了个XX<T>,那这样我编译器就默认了你XX<T>和外部类的A<T>可能不是同一个类型,这里就出现了hide,隐藏

如果XX<T>替换为其他的字符,如果XX<K>那么就不会出现泛型覆盖了。但是你想说,我就是想用外部类的T类型,怎么用呢,那你可以尝试这样使用XX不带钻石操作符,擦除泛型

class A<T>{
    interface X<T> {

    }

    class XX implements X<T>{

    }
}

如果觉得还是不理解,那么请看java源码ArrayList<E>中给出的范例,这里就是防止覆盖 :

在这里插入图片描述

衍生方法的泛型

在TreeMap源码中
在这里插入图片描述
调用了 TreeMap.this.successor(e)方法获取后继结点,(这个后继结点的源码分析,需要了解排序二叉树的知识点)
我们看这个方法
在这里插入图片描述
这里其实本身也是泛型了方法的。

泛型的更多知识点,还需要不断的遇见,不断地学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值