class<T>和 class<?>类型

? 表示不确定的java类型。 
T 表示java类型

Class<T>在实例化的时候,T要替换成具体类
Class<?>它是个通配泛型,?可以代表任何类型
<? extends T>受限统配,表示T的一个未知子类。
<? super T>下限统配,表示T的一个未知父类。
Class<T> 多见于泛型类的定义和声明。
Class<?>是Class<? extends Object>的简写。
Object是所有类的根类,是具体的一个类,使用的时候可能是需要类型强制转换的,但是用T ?等这些的话,在实际用之前类型就已经确定了,不需要强制转换。
那么
MyClass<? extends A> a=new MyClass<B>();
问好表示a所知的对象不知道是什么具体类型,extends A意味着这B肯定(必须)是A的子类或者就是A本身。

<? extends Collection> 这里?代表一个未知的类型,这个未知的类型实际上是Collection的一个子类,Collection是这个通配符的上限.
posted @ 2017-05-22 00:50  losesea  阅读(970)  评论(0编辑  收藏  举报