需求:通过反射来获取某一个类的构造器:
1):获取该类的字节码对象.
2):从该字节码对象中去找需要获取的构造器.
————————————————————————
Class类获取构造器方法:
Constructor类:表示类中构造器的类型,Constructor的实例就是某一个类中的某一个构造器
public Constructor<?>[] getConstructors():该方法只能获取当前Class所表示类的public修饰的构造器
public Constructor<?>[] getDeclaredConstructors():获取当前Class所表示类的所有的构造器,和访问权限无关
public Constructor<T> getConstructor(Class<?>… parameterTypes) :获取当前Class所表示类中指定的一个public的构造器
参数:parameterTypes表示:构造器参数的Class类型
如:public User(String name)
Constructor c = clz.getConstructor(String.class);
public Constructor<T> getDeclaredConstructor(Class<?>… parameterTypes) :获取当前Class所表示类中指定的一个的构造
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //获取指定的一个构造器的 private static void getOne() throws Exception { //1.获取构造器所在类的字节码对象 Class<User> clz = User.class; //2. 获取clz对象中所有的构造器 //需求1 .获取public User() Constructor con = clz.getConstructor(); System.out.println(con); //2.获取public User (String name) con = clz.getConstructor(String.class); System.out.println(con); //需求3. 获取private User(String name ,int age) con =clz.getDeclaredConstructor(String.class,int.class); System.out.println(con); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | private static void getAll() { // 1:获取构造器所在类的字节码对象 Class<User> clz = User.class; // 2 : 获取clz对象中的所有构造器 // public Constructor<?>[]getConstructors(), //该方法只能获取当前Class所表示的类 public 修饰的构造器 Constructor<?>[] cs = clz.getConstructors(); // 方法后面加S的表示获取所有的,不加S表示获取单个 System.out.println(cs.length); for (Constructor<?> c : cs) { System.out.println(c); } System.out.println("================"); // public Constructor<?>[] getDeclaredConstructors(), // 该方法只能获取当前Class所表示的类的所有构造器.和访问权限无关 cs = clz.getDeclaredConstructors(); System.out.println(cs.length); for (Constructor<?> c : cs) { System.out.println(c); } System.out.println("================"); } |
1 2 3 4 5 6 7 8 9 10 11 | class User { public User() { } public User(String name) { } private User(String name, int age) { } } |
声明:
本文采用
BY-NC-SA
协议进行授权,如无注明均为原创,转载请注明转自
个人编程学习网
本文地址: Java-获取类中的构造器
本文地址: Java-获取类中的构造器
您必须 登录 才能发表评论