class<T>,class<?>

每一个类都有一个class属性,

查看API帮助文档的Object  可以看到有这样一个方法getClass() (这是Object 类的方法)

解释是返回运行时的对象的class对象(class对象实例是什么呢 就是类名.class 例如 HelloWorld.class, 这由JVM生成和调用),返回类型为Class<?>   也就是所说的编译后的字节码文件  例如你编写的HelloWorld类就有HelloWorld.class字节码文件

HelloWorld.class 也就是   Class<HelloWorld> (API中解释为T - the type of the class modeled by thisClass object. For example, the type of
String.class is Class<String>. Use Class<?> if the class being modeled is unknown ) Class<T>中的T有有点像C++中的template<class T>   Class<?> 也就是 Class<? extends Object>

?的意思的,由于可能暂时不知道对象的Class类型(或为了简单用?替代) ,因为每个Class<T> 又继承Object ,所以可以代表任意的类型

class HelloWorld{

}
public class Test {

	public static void main(String[] args) {

		HelloWorld hw= new HelloWorld();	

	Class<?> t= hw.getClass();

	System.out.println(t);
}
}

输出 class HelloWorld





class<T>,class<?>,布布扣,bubuko.com

时间: 2024-11-12 11:29:04