另外一个类/变量动态访问的问题

03-07-07 KillerMan

问题:
程序的上下文中,存在一个变量a,那么怎么根据变量的名字a,去访问这个变量的内容。
问题的实质是类似与JavaScript中的eval函数的功能在Java中如何实现,或者说指针的指针该如何实现。

String name = "this is a test";
String b="name";

这时怎么通过b访问name.

KillerMan
2003-07-07 20:59

这个问题比较苦恼,在java中一直找不到替代的方案,连解决的思路都没有一个。
reflect可以得到一个类的定义的属性和方法,那一个类或者一个代码段中定义的变量该如何动态访问?

likewater
2003-07-08 00:02

变通的方法,要访问的变量可以用一个getB()的方法来访问
然后还是用reflect中的方法

KillerMan
2003-07-08 10:22

楼上的办法不行吧,例如在一个代码段中,如何定义这个getB()的方法,即使定义了,你如何把上下文相关的环境传递到你这个方法内部。

不知道,访问jvm的堆栈是否可行,照理,声明的每一个变量java都保存到栈里面去了。

KillerMan
2003-07-08 10:35

一个朋友曾经做过这样一个东西:从栈中得到类之间的互相调用关系,然后可以知道日志是从哪个类的中打印出来的。
那么这个问题,应该也可以用这个办法解决吧。变量的名字说到底是个地址空间的入口。
有哪位兄弟试过?