日期:2014-05-18  浏览次数:20662 次

有关动态获取Bean里属性的值
public   class   Bean{
    private   String   aa;
    private   String   bb;
    public   String   getAa(){
        return   aa;
    }
    public   void   setAa(String   a){
        aa   =   a;
    }
    public   String   getBb(){
        return   bb;
    }
    public   void   setBb(String   b){
        bb   =   b;
    }
}

public   class   test{
    public   void   gettest(Bean   bean,String   ss){
       
    }
}
请问我如何在gettest里根据ss传入的是 "aa "或 "bb "来获取bean对应的属性.
不能在gettest里定死了一个一个的判断。

------解决方案--------------------
你这个问题,我认为去看看java的动态代理
reflect功能。
------解决方案--------------------
使用这个试一下:
public static void gettest(Bean bean,String ss) throws Exception{
String methodName = "get " + ss.substring(0,1).toUpperCase() + ss.substring(1);
Method[] methods = bean.getClass().getDeclaredMethods();
for(int i=0; i <methods.length; i++) {
if(methodName.endsWith(methods[i].getName())){
methods[i].invoke(bean, new Object[]{});
break;
}
}
}