1.对象的getClass方法
2.类的class属性
3.class.forName("类的路径")方法
ReflectDemo demo = new ReflectDemo(); Class ReflectClass = demo.getClass(); System.out.println(ReflectClass.getName()); Class ReflectClass2 = ReflectDemo.class; System.out.println(ReflectClass2.getName()); System.out.println(ReflectClass2 == ReflectClass); Class ReflectClass3 = null; try { ReflectClass3 = Class.forName("reflect.ReflectDemo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(ReflectClass == ReflectClass3);
Class<?> reflect = Class.forName("reflect.ReflectConstructor"); Constructor[] array = reflect.getConstructors(); //获取所有非私有构造函数 for (Constructor c : array){ System.out.println(c); } System.out.println("-----------"); Constructor[] array2 = reflect.getDeclaredConstructors();//获取所有构造函数(包括私有构造) for (Constructor c : array2){ System.out.println(c); } System.out.println("-------------"); Constructor<?> constructor = reflect.getConstructor(String.class);//获取单个特定的非私有构造函数 Constructor constructor1 = reflect.getDeclaredConstructor(int.class); //获取单个特定的构造函数 ReflectConstructor reflectConstructor = (ReflectConstructor) constructor.newInstance("abc"); constructor1.setAccessible(true); constructor1.newInstance(2); }
原文:https://www.cnblogs.com/lzh66/p/13520805.html