获取构造器信息
package d18_3_1;
import java.lang.reflect.Constructor;
import java.util.Arrays;
/**
* 获取构造器的四个方法
*
* 运行结果如下
* [private d18_3_1.Test2(), public d18_3_1.Test2(java.lang.String,int,java.lang.String), public d18_3_1.Test2(java.lang.String,int), protected d18_3_1.Test2(java.lang.String)]
* protected d18_3_1.Test2(java.lang.String)
* [public d18_3_1.Test2(java.lang.String,int,java.lang.String), public d18_3_1.Test2(java.lang.String,int)]
* public d18_3_1.Test2(java.lang.String,int)
*/
public class ClassInfo1 {
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
// 获取构造器的四个方法
Class c = Test2.class;
// 1 获取所有的构造器,不论是否私有
Constructor[] dcs1 = c.getDeclaredConstructors();
System.out.println(Arrays.toString(dcs1));
// 2获取在所有构造器中,指定的构造器
Constructor dc1=c.getDeclaredConstructor(String.class);
System.out.println(dc1);
// 3 获取所有public构造器
Constructor[] dcs2 = c.getConstructors();
System.out.println(Arrays.toString(dcs2));
// 4在所有public构造器中,获取指定的构造器
Constructor dc2=c.getConstructor(String.class,int.class);
System.out.println(dc2);
}
}
class Test2 {
private String name;
private int age;
String sex;
private Test2() {
}
protected Test2(String name) {
super();
this.name = name;
}
public Test2(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Test2(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Test [name=" + name + ", age=" + age + "]";
}
}