package com.lf.testreflection; import java.lang.reflect.Field; import java.lang.reflect.Method; import org.junit.Test; public class ClassTest{ @Test public void testSomthing()throws Exception { //创建运行时类的对象 Class cla = Person.class; // 创建运行时Person的对象 Person person = (Person)cla.newInstance(); // 通过cla获取对象的属性 Field field = cla.getDeclaredField("name"); // 设置可以访问的权限 field.setAccessible(true); // 设置相应的属性值 field.set(person, "kity"); //获取相应的属性(public可以使用下面方法获取) field = cla.getField("address"); field.set(person, "NewYo"); field = cla.getDeclaredField("age"); field.setAccessible(true); field.set(person, 18); System.out.println(person); // 获取无参方法 Method method = cla.getMethod("learn"); method.invoke(person); // 获取有参方法 Method method2 =cla.getMethod("readSomething",String.class); method2.invoke(person, "ainsy"); // 获取多参方法 Method method3 =cla.getMethod("readSomething",int.class,String.class); method3.invoke(person, 20,"ainsy"); // 获取所有的属性 Field[] fields = cla.getDeclaredFields(); for (Field field2 : fields) { // 每个属性的修饰符 System.out.print(field2.getModifiers()+" "); // 每个属性名 System.out.print(field2.getName()+" "); // 获取属性的类型 Class type = field2.getType(); System.out.println(type); } // 调用运行时本身的.class属性 Class cla2 = Person.class; //打印类路径 System.out.println(cla2.getName()); // 通过运行时类的对象获取 Person p = new Person(); Class cla3 = p.getClass(); System.out.println(cla3.getName()); } }
原文:http://www.cnblogs.com/lantu1989/p/6097371.html