package Administrate;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Test {
public static void main(String[] args){
Class cla;
try {
//第一种写法 Class cla=okjbvc.class;
/*okjbvc ok=new okjbvc();//第二种写法
Class cla=ok.getClass();*/
//第三种写法:根据class路径获取
cla = Class.forName("Administrate.okjbvc");
//获取该类所有属性
Field[] field = cla.getDeclaredFields();
System.out.println("属性");
for (Field F : field) {
System.out.println(F);
}
System.out.println("set/get封装");
//获取该类所有set/get封装
Method[] Method = cla.getDeclaredMethods();
for (Method M : Method) {
System.out.println(M);
}
System.out.println("构造方法");
//获取该类所有构造方法
Constructor[] Constructor = cla.getDeclaredConstructors();
for (Constructor C : Constructor) {
System.out.println(C);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Class cla1=Class.forName("Administrate.okjbvc");
Constructor Const=cla1.getDeclaredConstructor(String.class,int.class,String.class);
Const.setAccessible(true);//如果该方法是private,true是变为public,flase是改为private
okjbvc ok=(okjbvc)Const.newInstance("你我他",88,"岁");
System.out.println(ok.getName()+ok.getAge()+ok.getG());
okjbvc o = new okjbvc();
Field Field=cla1.getDeclaredField("name");
Field.setAccessible(true);
Field.set(o, "你我他");
System.out.println(o.getName());
Method ME=cla1.getMethod("setName", String.class);
ME.invoke(o, "oo");
System.out.println(o.getName());
} catch (ClassNotFoundException e) {
System.out.println("找不见的类路径");
e.printStackTrace();
} catch (NoSuchMethodException e) {//调用不到方法
e.printStackTrace();
} catch (SecurityException e) { //安全异常
e.printStackTrace();
} catch (InstantiationException e) {//实例化异常
e.printStackTrace();
} catch (IllegalAccessException e) {//非法访问异常
e.printStackTrace();
} catch (IllegalArgumentException e) {//非法论点异常
e.printStackTrace();
} catch (InvocationTargetException e) {//调用目标异常
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}