方式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("类的全类名");