什么时候使用Class<?>什么时候使用 <T>
在Java中,Class<?>
和<T>
都是泛型类型,但是它们的使用场景不同。
Class<?>
表示一个未知类型的Class对象,通常用于表示某个类的Class对象,但是不确定具体类型是什么。例如,我们可以使用Class<?>
来表示一个未知类型的List对象的Class对象,如Class<?> listClass = List.class;
。在这种情况下,我们并不关心List中元素的具体类型,只需要知道它是一个List对象即可。
<T>
表示一个类型参数,通常用于定义泛型类或泛型方法。在定义泛型类或泛型方法时,我们需要指定一个类型参数,这个类型参数可以在类或方法中被使用。例如,下面是一个泛型类的定义:
public class Box<T> {
private T content;
public Box(T content) {
this.content = content;
}
public T getContent() {
return content;
}
public void setContent(T content) {
this.content = content;
}
}
在这个例子中,<T>
表示一个类型参数,它可以在Box类中被使用,用于表示Box中存储的内容的类型。当我们创建一个Box对象时,需要指定一个具体的类型作为类型参数,例如:
Box<String> box = new Box<>("hello");
String content = box.getContent();
在这个例子中,我们使用<String>
作为类型参数,表示Box中存储的是一个String类型的内容。
因此,Class<?>
通常用于表示未知类型的Class对象,而<T>
通常用于定义泛型类或泛型方法。