原文地址Java Reflection Constructors
获取构造函数的对象
1
| Constructor[] constructors = orderClass.getConstructors();
|
可以通过构造函数的具体参数类型直接获取单独的构造函数,而不用获取全部的Constructors
1 2 3 4 5 6
| try { Constructor constructor = orderClass.getConstructor(new Class[]{String.class}); System.out.println(constructor.getName()); } catch (NoSuchMethodException e) { e.printStackTrace(); }
|
构造函数的参数类型
可以像下面这样获取构造函数的参数
1 2
| Class[] parameterTypes = constructor.getParameterTypes(); parameterTypes[0].getName();
|
用构造函数对象实例化一个类
constructor.newInstance()方法的方法参数是一个可变参数列表,但是当你调用构造方法的时候你必须提供精确的参数,即形参与实参必须一一对应。在这个例子中构造方法需要一个String类型的参数,那我们在调用newInstance方法的时候就必须传入一个String类型的参数
1 2 3 4 5 6 7 8 9 10 11 12
| try { Constructor constructor = Order.class.getConstructor(String.class); Order order = (Order) constructor.newInstance("2016050901"); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); }
|