Java中通过反射获得对象的属性信息

先建立一个类,有四种属性:

Java代码   收藏代码
  1. private int id;  
  2.   
  3. private String name;  
  4.   
  5. private byte by;  
  6.   
  7. private short st;  

 

以下方法,创建一个对象,然后打印该对象的属性名字,属性值,和属性的类型:

Java代码   收藏代码
  1. public class T {  
  2.     public static void main(String[] args) throws Exception {  
  3.         User u = new User();  
  4.         u.setId(1);  
  5.         u.setName("cc");  
  6.         u.setBy((byte)1);  
  7.         u.setSt((short)2);  
  8.         getProperty(u);  
  9.     }  
  10.     /** 
  11.      * 获得一个对象各个属性的字节流 
  12.      */  
  13.     @SuppressWarnings("unchecked")  
  14.     public static void getProperty(Object entityName) throws Exception {  
  15.         Class c = entityName.getClass();  
  16.         Field field[] = c.getDeclaredFields();  
  17.         for (Field f : field) {  
  18.             Object v = invokeMethod(entityName, f.getName(), null);  
  19.             System.out.println(f.getName() + "\t" + v + "\t" + f.getType());  
  20.         }  
  21.     }  
  22.     /** 
  23.      * 获得对象属性的值 
  24.      */  
  25.     @SuppressWarnings("unchecked")  
  26.     private static Object invokeMethod(Object owner, String methodName,  
  27.             Object[] args) throws Exception {  
  28.         Class ownerClass = owner.getClass();  
  29.         methodName = methodName.substring(01).toUpperCase()  
  30.                 + methodName.substring(1);  
  31.         Method method = null;  
  32.         try {  
  33.             method = ownerClass.getMethod("get" + methodName);  
  34.         } catch (SecurityException e) {  
  35.         } catch (NoSuchMethodException e) {  
  36.             return " can't find 'get" + methodName + "' method";  
  37.         }  
  38.         return method.invoke(owner);  
  39.     }  
  40. }  

 

打印结果如下:

Java代码   收藏代码
  1. id  1   int  
  2. name    cc  class java.lang.String  
  3. by  1   byte  
  4. st  2   short  

 

通过这些内容,可以在系统中写一些公共的解析方法,内容仅供参考。

更多内容访问我的专栏:http://www.iteye.com/blogs/subjects/cuisuqiang 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值