java通过反射获取类中public 方法和属性并赋值调用
1.java通过反射获取类中public 方法的返回类型 方法名 参数类型的实现方法并打印出来.
1 import java.lang.reflect.Method; 2 import java.lang.reflect.Parameter; 3 4 public class ClassUtil { 5 public static void getClassMethodsName(Object o){ 6 Class aClass = o.getClass(); 7 System.out.println("类名:"+aClass.getName()); 8 Method[] method = aClass.getMethods(); 9 for (int i=0;i<method.length;i++){ 10 System.out.printf(method[i].getReturnType()+" "); 11 System.out.printf(method[i].getName()+"("); 12 Class[] parameterTypes = method[i].getParameterTypes(); 13 int i1=0; 14 for (Class s: parameterTypes) { 15 if (i1==0){ 16 System.out.printf(s.getTypeName()); 17 i1=1; 18 }else { 19 System.out.printf("," + s.getTypeName()); 20 } 21 } 22 System.out.printf(")"); 23 System.out.println(""); 24 } 25 } 26 }
2.调用该方法并运行
1 public class Office1 { 2 public static void main(String[] args) { 3 int i=0; 4 Class integerClass = int.class; 5 ClassUtil.getClassMethodsName(i); 6 } 7 }
3.运行结果
二 通过反射获取类属性(String int List 实体类)并动态赋值.
public static void main(String[] args) { DogEntity dogEntity = new DogEntity(); GetProperties(dogEntity); } public static void GetProperties(Object o){ try { List<String> list=new ArrayList<>(); list.add("HELLO"); Field[] fields = o.getClass().getDeclaredFields(); Object as="23"; for (Field f : fields) { System.out.printf(f.getType().getName()); //获取属性类型 System.out.printf("_______"); System.out.printf(f.getName()); //获取属性名称 System.out.println(""); f.setAccessible(true); //不设置语句检查,可获取类私有属性. if (f.getType().getName().equals("java.lang.String")){ //判断反射过来的属性类型,将数据源赋值,这编几个数据 f.set(o,as); }else if (f.getType().getName().contains("int")){ f.set(o,112); }else if (f.getType().getName().contains("Date")){ f.set(o,new Date()); }else if (f.getType().getName().contains("List")){ list.add("LIST!!!!!!!!!"); f.set(o,list); }else { Class c1 = Class.forName(f.getType().getName()); //获取属性值为对象(实体类)的情况 Field name = c1.getDeclaredField("name"); Object o1=c1.newInstance(); name.set(o1,"Cat_Name!!!"); f.set(o,o1); } //o.getClass().getDeclaredField(f.getName()).set(o,as); //list.add(f.toString()); System.out.print("__________"); System.out.println(f.toString()); } System.out.printf("Debug!!!!!!"); } catch (Exception e) { e.printStackTrace(); } }
2.运行结果