请问大家怎么根据对象名字符串获得对象的变量啊

pingpingdong 2007-11-12 04:36:27
比如我有一个字符串"varone",那我怎么获得varone这个对象变量啊?
谢谢大家!
...全文
237 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dddhero 2010-08-06
  • 打赏
  • 举报
回复
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
pingpingdong 2007-11-13
  • 打赏
  • 举报
回复
谢谢啦!
qybao 2007-11-13
  • 打赏
  • 举报
回复
反射能解决这个问题?LZ实际动手试过了?如果楼主真能解决这个问题,我希望LZ能贴出代码出来,我是诚心学习的。最好做个例子,比如
class A {
int index;
public A(int index) {
this.index = index;
}
public void show() {
System.out.println("index=" + index);
}
}

public class FindVariant {
public static void main() {
FindVariant fv = new FindVariant();
A a = new A(1);
Object obj = fv.findByName("a");
if (obj instanceOf A) {
A aa = (A)obj;
aa.show();
if (aa == a) { //这里是判断找到的是不是想找的,如果是,引用地址应该是一样的
System.out.println("find the same variant.");
}
}

obj = findByClassNameAndName(A.class.getName(), "a");
if (obj instanceOf A) {
A aa = (A)obj;
aa.show();
if (aa == a) {
System.out.println("find the same variant.");
}
}
}

public Object findByName(String name) {
//LZ如果真的解决了,能把你的处理补写完这个函数吗?
}

public Object findByClassNameAndName(String className, String name) {
//就算你只知道class名,你又是怎么得到实际的变量的?也请你补写完这个函数好吗?
}
}

这个问题我很早就注意过了,但是我一直没能解决,各种反射手段我都用过,都不行,后来我用反编译(汇编)跟踪过,发现里面的变量都是用#1,#2,#3这样的标识符去标识的,也就是说对变量的操作都是按相对地址的方式去寻址的,变量名根本就没有实际的意义(正像大家所知的一样,变量名可以随便取,但是编译结果是一样的)。如果LZ包括上面几个高人真的能用反射解决的话,能否把解决方法发告诉我,我是诚心请教的,希望各位不惜赐教,谢了。


网络咖啡 2007-11-12
  • 打赏
  • 举报
回复
知道对象名以后可以利用反射机制获得对象的内容
olivesoup 2007-11-12
  • 打赏
  • 举报
回复
如果你能获得该对象所在Class,那么通过Field反射应该可以得到
yangxiao_jiang 2007-11-12
  • 打赏
  • 举报
回复
你的这个是类名吧?
否则不能得到
qybao 2007-11-12
  • 打赏
  • 举报
回复
这个估计没法做到吧。
编译好的代码被加载到内存中执行时,变量都是按相对地址去寻址的,也就是变量名并没有实际的意义,除非你的类里有个类似于getName()之类的,可以用来比较,那还有可能,仅仅是可能。至少我知道的,除了class名找class能做到外,通过变量名找变量的还真是没看到过。
kcage 2007-11-12
  • 打赏
  • 举报
回复
这什么问题啊。完全是蒙的!
olivesoup 2007-11-12
  • 打赏
  • 举报
回复
说清除点,不太明白

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧