方式1:获取编译期间已知类型

前提:若已知具体的类,通 过类的class属性获取,该方法最为安全可靠,程序性能最高

实例:

Class clazz = String.class;
Class clazz = User.class;

方式2:获取对象的运行时类型

前提:已知某个类的实例,调用该实例的getClass()方法获取Class对象

实例:

User user = new User();
Class clazz = user.getClass();

方式3:可以获取编译期间未知的类型

前提:已知一个类的全类名,且该类在类路径下,可通过Class类的静态方法forName()获取,可能抛出ClassNotFoundException

实例:

Class clazz = Class.forName("java.lang.String");
Class clazz = Class.forName("java.litecode.User");

方式4:其他方式

前提:可以用系统类加载对象或自定义加载器对象加载指定路径下的类型

实例:

Class clazz4 = ClassLoader.getSystemClassLoader().loadClass("类的全类名");