101.【JAVA程式設計】反射
阿新 • • 發佈:2018-12-21
public class ReflectDemo {
public static void main(String[] args)throws Exception {
Class clazz = Class.forName("com.abyiyi.reflect.Person");
Constructor<?>[] constructors = clazz.getConstructors();
Constructor c1 = clazz.getConstructor(String.class);
Constructor c2 = clazz.getConstructor(String.class,String.class);
Constructor c3 = clazz.getConstructor(String.class,String.class,int.class);
/**
* 可變引數和陣列物件一般是通用的
*/
Class[] pType = new Class[]{String.class,String.class};
Object[] obj1 = new Object[]{ "ddd" };
Object[ ] obj2 = new Object[]{ "ddd", "anybody" };
Object[] obj3 = new Object[]{ "ddd", "anybody" ,99};
Object obj = c2.newInstance("ww","wwww");
Object obj222 = c2.newInstance(obj2);
Person p = (Person)obj;
System.out.println(p.getName()+"--"+p.getSex());
for (int i = 0; i < constructors.length; i++) {
Constructor c = constructors[i];
System.out.println("===");
Class[] pas = c.getParameterTypes();
for (int j = 0; j < pas.length; j++) {
System.out.println(pas[j].getName());
}
}
Method[] method = clazz.getDeclaredMethods();
}
}
public class Person {
private String name;
private String sex;
private int age;
private String value;
public Person(String name) {
this.name = name;
}
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
public Person(String name, String sex) {
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}