利用java反射过滤类对象

 
    1. package com.farrand.velocity.entity;
    2. public class VelocityUser {
    3.     private Integer id;
    4.     
    5.     private String username;
    6.     private String password;
    7.     public Integer getId() {
    8.         return id;
    9.     }
    10.     public void setId(Integer id) {
    11.         this.id = id;
    12.     }
    13.     public String getPassword() {
    14.         return password;
    15.     }
    16.     public void setPassword(String password) {
    17.         this.password = password;
    18.     }
    19.     public String getUsername() {
    20.         return username;
    21.     }
    22.     public void setUsername(String username) {
    23.         this.username = username;
    24.     }
    25. }
    package
     com.farrand.struts.action;
  1. import java.lang.reflect.Method;
  2. import org.apache.commons.lang.StringEscapeUtils;
  3. import com.farrand.velocity.entity.VelocityUser;
  4. public class Test {
  5.     private static String clzName;
  6.     /**
  7.      * 构造方法
  8.      * @param asClzName
  9.      *            要过滤的类名字
  10.      */
  11.     public Test(String asClzName) {
  12.         Test.clzName = asClzName;
  13.     }
  14.     /**
  15.      * 用于取得被过滤后的类的方法
  16.      * @return 返回类型为Object
  17.      */
  18.     public static Object getPropFilteredClz(Object classNameObj, Object[] obj) {
  19.         try {
  20.             Class clz = Class.forName(clzName);
  21.             Method[] methods = clz.getDeclaredMethods();
  22.             Object lsTemp = null;
  23.             for (int i = 0; i < methods.length; i++) {
  24.                 if (methods[i].getName().startsWith("g")) {
  25.                     // 反射调用get***方法                 
  26.                     String methodSetName = methods[i].getName().replace("get""set");
  27.                     Method setMethod = clz.getMethod(methodSetName, methods[i].invoke(classNameObj, obj).getClass());
  28.                     if (methods[i].invoke(classNameObj, obj) instanceof  String) {                      
  29.                         lsTemp = StringEscapeUtils.escapeHtml((methods[i].invoke(classNameObj, obj).toString()));
  30.                     } else {
  31.                         lsTemp = methods[i].invoke(classNameObj, obj);
  32.                     }
  33.                     setMethod.invoke(classNameObj, lsTemp);
  34.                 }
  35.             }
  36.         } catch (Exception ex) {
  37.             // TODO
  38.         }
  39.         // 返回过滤后的类的实例
  40.         return classNameObj;
  41.     }
  42.     public static Object getPropFilteredClz(Object classNameObj) {
  43.         Object propFilteredObj = getPropFilteredClz(classNameObj, null);
  44.         return propFilteredObj;
  45.     }
  46.     public static void main(String[] args) {
  47.         // 此处为测试方法,比如传入的类型名为VelocityUser
  48.         VelocityUser userInfo = new VelocityUser();
  49.         userInfo.setId(5);
  50.         userInfo.setUsername("wan<br>mei");
  51.         userInfo.setPassword("shijie");
  52.         new Test("com.farrand.velocity.entity.VelocityUser");
  53.         // 此处过滤返回后,类型转换为VelocityUser型对象
  54.         VelocityUser mzk = (VelocityUser) Test.getPropFilteredClz(userInfo);
  55.         
  56.         System.out.println("过滤后id:" + mzk.getId());
  57.         System.out.println("过滤后username:" + mzk.getUsername());
  58.         System.out.println("过滤后password:" + mzk.getPassword());
  59.     }
  60. }

运行结果:

过滤后id:5
过滤后username:wan&lt;br&gt;mei
过滤后password:shijie

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值