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.运行结果
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有