如题,我的目的是想对传输进来的对象通过其在声明时的变量名作为逻辑判断。
例如:
JLabel name1;
JLabel name2;
JLabel name3;某个方法接收上面的JLabel参数, method1(Object name){
//有什么方法可以在这里得到name的声明名称即name1、name2、name3,然后我根据声明名的不同分别做相应处理。
}我知道可以设置对象的name来达到此目的,但毕竟增加了程序的复杂性,因为我可能忘记设置name。
通过getClass()得到Class对象后好像也没有直接获取对象的声明名方法。
查过网上很多办法,好像都没有根本的解决办法,都是通过反射获取声明对象集合(好像是XXX.getClass().getDeclaredFields())然后再遍历匹配,但这需要获得当前对象的祖先对象,而且感觉比较麻烦,有些有没有更简单一些的方法?------我知道有别的变通办法可以解决我的问题,但我还是想知道有没有我需要的解决方案,请问乱抛砖,谢谢。

解决方案 »

  1.   

    if(name == name1) {
        ...
    } else if(name == name2) {
       ...
    } else if(name == name3) {
       ...
    }
      

  2.   

    要获取变量名?除了解释型的脚本语言可以,包括java在内的其他语言都不能直接获得。
      

  3.   

    3楼的,不要调侃。
    我是想用声明名来做一个通配处理,比如其本身表示一个表字段名,这样对于属性相同的字段我的代码可以在方法里直接 name = value (拼sql where字符串,name对象本身可以通过方法获取value),这样可以减少重复代码。
    上面只是举个例子,实际应用比此更复杂。
    其实说白了就是想利用反射来重构代码,减少代码的冗余行。
    就像spring的面相切面利用定义代码和反射来建立对象,这样就不用一一判断对象类型再分别new了。
    大概就是这个意思。4楼说只有解释型语言可以获取变量名,有没有朋友考证一下?