java反射基础应用

来源:互联网 发布:服装设计要学什么软件 编辑:程序博客网 时间:2024/06/12 18:32
public class Person {private int id;private String name;private String age;public Person(int id, String name, String age) {super();this.id = id;this.name = name;this.age = age;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String contract(int id ,String name, String age){return id+name+age;}}
1、通过反射去取java对象中的值不同的方式:
import java.lang.reflect.Field;import java.lang.reflect.Method;public class MainTest {public static void main(String[] args) {Person person = new Person(1,"xiaowang","23");//访问字段的属性值//======================通过字段值得方式取得各个值============================Class personClass = person.getClass();try {Field fieldId =  personClass.getDeclaredField("id");fieldId.setAccessible(true);// int id = (int)fieldId.get(person);int id = fieldId.getInt(person);Field fieldName = personClass.getDeclaredField("name");fieldName.setAccessible(true);String name = (String)fieldName.get(person);Field fieldAge = personClass.getDeclaredField("age");fieldAge.setAccessible(true);String age = (String)fieldAge.get(person);//======================通过方法调用的方式来取字段的值,invoke===================================Method methodId = personClass.getDeclaredMethod("getId", null);int id1 = (int)methodId.invoke(person, null);Method methodAge = personClass.getDeclaredMethod("getAge", null);//无参数的方法,设定为nullString age1 = (String)methodAge.invoke(person, null);Method methodName = personClass.getDeclaredMethod("getName",null);String name1 = (String)methodName.invoke(person, null);System.out.println("id:"+id+" name:"+name+" age:"+age);System.out.println("id:"+id1+" name:"+name1+" age:"+age1);//=================================方法带多个参数的方式================================Method moreParam = personClass.getDeclaredMethod("contract", new Class[]{int.class,String.class,String.class});String result = (String)moreParam.invoke(person, new Object[]{1,"abc","23"});System.out.println(result);} catch (Exception e) {// TODO: handle exception}}}
下一步待整理:
java的设置不同方式;反射中常用到的类;遍历的方式;结合工作中的需要借助反射取请求体中的值

                                             
0 0