Java反射获取基本类型、包装类型、String对象类型的字段值

来源:互联网 发布:数据库 asc 编辑:程序博客网 时间:2024/03/29 03:36
package com.zkn.reflect.classinfo;import java.lang.reflect.Field;import java.lang.reflect.Type;import com.zkn.reflect.scope.Company;import com.zkn.reflect.scope.People;/** * <p>Title: </p> * * <p>Description: </p> * *  * @since:2015-5-25 下午07:02:09 *  */public class ClassInfo { public static void getParameters(Class<?> clazz) {  Field[] fields = clazz.getDeclaredFields();  for(Field f : fields){   System.out.println(f.getName());  } }  public static void getFieldsValue(Object obj) {  Field[] fields = obj.getClass().getDeclaredFields();  /**   * 基本类型、包装类型、String类型   */  String[] types = {"java.lang.Integer",        "java.lang.Double",        "java.lang.Float",        "java.lang.Long",        "java.lang.Short",        "java.lang.Byte",        "java.lang.Boolean",        "java.lang.Character",        "java.lang.String",        "int","double","long","short","byte","boolean","char","float"};  for(Field f : fields){   f.setAccessible(true);   try {    for(String str : types) {     if(f.getType().getName().equals(str))      System.out.println("字段:"+f.getName()+" 类型为:"+f.getType().getName()+" 值为:"+ f.get(obj));    }   } catch (IllegalArgumentException e) {    e.printStackTrace();   } catch (IllegalAccessException e) {    e.printStackTrace();   }  } }  public static void main(String[] args) throws Exception {  People people = new People();  people.setAge(12);  people.setSex("男");  Company company = new Company();  company.setAddress("北京");  company.setName("科技股份有限公司");  people.setCompany(company);  people.setMoney(1000.00);  getFieldsValue(people); } }package com.zkn.reflect.scope;/** * <p>Title: </p> * * <p>Description: </p> * *  * @since:2015-5-25 下午07:04:22 *  */public class People { /**  * 姓名  */ private String name; /**  * 性别  */ private String sex; /**  * 年龄  */ private int age; /**  * 地址  */ private String address; /**  * 学校  */ public String school; /**  * 公司  */ private Company company; /**  * 金额  */ private Double money;  public String getName() {  return name; } public void setName(String name) {  this.name = name; } public String getSex() {  return sex; } public void setSex(String sex) {  this.sex = sex; } public String getAddress() {  return address; } public void setAddress(String address) {  this.address = address; } public String getSchool() {  return school; } public void setSchool(String school) {  this.school = school; } public Company getCompany() {  return company; } public void setCompany(Company company) {  this.company = company; } public int getAge() {  return age; } public void setAge(int age) {  this.age = age; } public Double getMoney() {  return money; } public void setMoney(Double money) {  this.money = money; } }package com.zkn.reflect.scope;/** * <p>Title: </p> * * <p>Description: </p> * *  * @since:2015-5-28 下午12:52:55 *  */public class Company { /**  * 公司名称  */ private String name; /**  * 公司地址  */ private String address; public String getName() {  return name; } public void setName(String name) {  this.name = name; } public String getAddress() {  return address; } public void setAddress(String address) {  this.address = address; }  @Override public String toString() {  return "Company [name=" + name + ", address=" + address + "]"; } }输出结果:字段:name 类型为:java.lang.String 值为:null字段:sex 类型为:java.lang.String 值为:男字段:age 类型为:int 值为:12字段:address 类型为:java.lang.String 值为:null字段:school 类型为:java.lang.String 值为:null字段:money 类型为:java.lang.Double 值为:1000.0  

0 0
原创粉丝点击