Java反射小练习
2016-11-27 19:25
316 查看
package Administrate; public class okjbvc { private String name; private int age; private String G; public okjbvc(){ } private okjbvc(String name,int age,String G){ setName(name); setAge(age); setG(G); } 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; } public String getG() { return G; } public void setG(String g) { G = g; } }
package Administrate; import java.io.File; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.String; import java.util.Calendar; import javax.activation.FileDataSource; public class Test { public static void main(String[] args){ Class cla; try { /*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(); } } }
相关文章推荐