本文收集了一些较好的关于泛型和反射相关的文章
泛型
反射
《夯实JAVA基本之二 —— 反射(1):基本类周边信息获取》
《夯实JAVA基本之二 —— 反射(2):泛型相关周边信息获取》
泛型
一、基本使用
二、类型绑定
<T extends BoundingType>
绑定接口
public interface ABC<T> { public boolean fun(T i); } //添加上extends ABC 之后,就可以ABC 里的函数了 public static <T extends Comparable> T min(T...a){ // TODO return null; }
绑定类
class ABC { // TODO } public static <T extends ABC> String getABCName(T t){ return null; }
绑定多个限定 (中间用&隔开)
public static <T extends ABC & CBA> String getABCName(T t){ return null; }
二、通配符
无边界通配符:? =>通配符的意义就是它是一个未知的符号,可以是代表任意的类。
?与T的区别:
答案是:他们俩没有任何联系!!!!!
- 泛型变量T不能在代码用于创建变量,只能在类,接口,函数中声明以后,才能使用。
- 而无边界通配符?则只能用于填充泛型变量T,表示通配任何类型。
通配符?的extends绑定
<? extends Number>
- 利用
<? extends Number>
定义的变量,只可取其中的值,不可修改
- 利用
通配符?的super绑定
<? super Manager>
- super通配符实例内容:能存不能取
通配符?总结
<? extends A>
和<? super A>
通配符的特征,我们可以得出以下结论:- 如果你想从一个数据类型里获取数据,使用 ? extends 通配符(能取不能存)
- 如果你想把对象写入一个数据结构里,使用 ? super 通配符(能存不能取)
- 如果既想存,又想取,那就别用通配符。