日期:2014-05-20  浏览次数:20758 次

能通过一个对象的实例,获得这个实例的名字吗?
我是指变量名。谢谢

------解决方案--------------------
获取变量名?
楼主举得出例子吗,感觉这样的需求根本不可能啊,空洞
不会是获取一个实例的类名吧
System.out.println(new String().getClass());
------解决方案--------------------
你是不是想说用反射机制找到变量名?
------解决方案--------------------
只能得到内存地址吧,这样的要求估计做不到
------解决方案--------------------
我觉得问题有理论价值,但Java中好象没有这样的机制.复杂性在于,任何一个实例可能对应0个(匿名对象)和多个变量,而从实例去获得这些变量名好象是违背最基本的安全要求.

------解决方案--------------------
无稽之谈!

局部变量是存放在内存栈中,当他的生命周期结束之后,变量也就不再内存的栈中了,你从那里去获取?不过你可以在对象中增加一个field,用于保存变量的名称,只要每次把改对象的实例赋值给一个变量,就把改变量的名称setter到这个field中,不过这样做有什么意义?

关于你要实现的东东,是不是指在SWING中,点击一个组件得到该组件的名称?可是设置一个command属性实现。
------解决方案--------------------
应该不能吧?试想一下如果你有一个类Test
Test t = new Test();

Test a;
Test b;
Test c;

a = b = c = t;
如果能返回变量明,你说是返回哪个呢?
------解决方案--------------------
你的意思就是:
传 a 返回 a
传 b 返回 b

传哪个返回哪个呀。

那么你都知道他的变量名了还用得着返回吗?
------解决方案--------------------
如果是EventObject就可以用getSource(),如果是别的,我觉得搞不了
------解决方案--------------------
编译之后就是字节码,不存在变量名了。Java 不是脚本语言。
------解决方案--------------------
如果你已经获得了一个对象,操作它就是了,还要变量名做什么?
------解决方案--------------------
java好像没这强吧
------解决方案--------------------
C++可以实现的
------解决方案--------------------
需要跟踪实例的引用才行吧,C++怎么实现?
------解决方案--------------------
变量名本来就是一个我们引用的名字,对于程序来说它没什么用,有用的只是它存储的数据,所以很少有一门语言提供得到这个名字的接口,得到它也没有用。
------解决方案--------------------
不是很理解你的问题,
如果你是说如果点击窗体,然后返回这个窗体的属性(其中包括,object,variables,arguments),
如果需要显示object,可以写个方法来返回,比如
public 要点击的窗体 点击窗体(要点击窗体 窗体1){
要点击窗体 窗体2=窗体1;
return 窗体2;
}
你可以加载这个方法,当点击窗体1的时候,(在event里加载).
如果窗体多的话,可以用array来写这个方法,
当然对于variables...可以用类似的方法来返回就行了.
不知道是不是楼主说的意思. :)