zoukankan      html  css  js  c++  java
  • 通过反射,对javabean属性进行过滤操作

    /**
    	 * 根据属性名获取属性值
    	 * @param fieldName		属性名
    	 * @param o				传入对象
    	 * @return
    	 */
    	private Object getFieldValueByName(String fieldName, Object o) {
     		try {
    			String firstLetter = fieldName.substring(0, 1).toUpperCase();
    			String getter = "get" + firstLetter + fieldName.substring(1);
    			Method method = o.getClass().getMethod(getter, new Class[] {});
    			Class c= method.getReturnType();
    			if(!String.class.isAssignableFrom(c)){
    				return null;
    			}
    			Object value = method.invoke(o, new Object[] {});
    			return value;
    		} catch (Exception e) {
    			e.printStackTrace();
    			logger.error(e.getMessage(), e);
    			return null;
    		}
    	}
    	
    	/**
    	 * 获取防止注入新的对象
    	 * @param o					传入对象
    	 * @return
    	 */
    	public Object getRightParameterObject(Object o){
    		try{
    			String[] strs=getFiledName(o);//属性名数组
    			for(String s:strs){
    				Object obj=getFieldValueByName(s, o);//属性值
    				if(obj == null){
    					continue;
    				}
    				String firstLetter = s.substring(0, 1).toUpperCase();
    				String getter = "set" + firstLetter + s.substring(1);
    				System.out.println(getter);
    				Method method = o.getClass().getMethod(getter, String.class);
    				method.invoke(o,StringUtil.getWhereNewValue(obj.toString()));//这个地方对属性值进行操作,对属性值过滤什么的
    				//}
    			}
    		} catch(Exception e){
    			logger.error(e.getMessage(), e);
    			return null;
    		}finally {
    			
    		}
    		return o;
    	}
    	
    	
    	/**
    	 * 获取对象的所有属性值,返回一个对象数组
    	 * @param o					传入对象
    	 */
    	private Object[] getFiledValues(Object o) {
    		String[] fieldNames = this.getFiledName(o);
    		Object[] value = new Object[fieldNames.length];
    		for (int i = 0; i < fieldNames.length; i++) {
    			value[i] = this.getFieldValueByName(fieldNames[i], o);
    		}
    		return value;
    	}
        
    	
    	/**
    	 * 获取属性名数组
    	 * @param o					传入对象
    	 */
    	private String[] getFiledName(Object o) {
    		Field[] fields = o.getClass().getDeclaredFields();
    		String[] fieldNames = new String[fields.length];
    		for (int i = 0; i < fields.length; i++) {
    			//System.out.println(fields[i].getType());
    			fieldNames[i] = fields[i].getName();
    		}
    		return fieldNames;
    	}
    

      

  • 相关阅读:
    微软同步发行Windows 10和Windows 10 Mobile系统更新
    MySQL5.5中文支持
    sqlplus登入和plsql登入的差别
    SQL Server统计信息:问题和解决方式
    OSX: 命令行制作U盘Recovery HD
    Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭
    JSP常见的三个编译指令
    matlab-非线性方程求根函数及函数曲线绘制
    走进windows编程的世界-----消息处理函数(3)
    LoadRunner利用ODBC编写MySql脚本
  • 原文地址:https://www.cnblogs.com/ghsy/p/7641952.html
Copyright © 2011-2022 走看看