java字符串怎么转标识符

class m{
int abc=3;

int def=4;

}

String xy="abc";
如何实现通过xy对应的字符串"abc"去调用到m中的属性abc对应的int值?

第1个回答  2012-11-29
1. 于Class m中定义方法:
public int getAbc(){
return this.abc;

}

public int getDef(){
return this.def;
}

2. 利用反射机制, 通过xy定义的字符串找到对应的class m中的方法名getXXX( XXX表示xy的值),然后返回处理结果。
第2个回答  2012-11-29
其实就是Class类的用法问题。不细讲了,看懂我下面这个例子应该就会了。

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class TestClass {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, NoSuchMethodException,
IllegalArgumentException, IllegalAccessException, InvocationTargetException {
BVO a = new BVO();
a.setName("123123123");
Field[] fs = a.getClass().getDeclaredFields();
Method[] methods = a.getClass().getMethods();
for (Field f : fs) {
String fieldGetterName = null;
for (Method m : methods) {
if (m.getName().toLowerCase().contains(f.getName().toLowerCase())) {
fieldGetterName = m.getName();
break;
}
}
if (fieldGetterName != null) {
Object value = a.getClass().getMethod(fieldGetterName, new Class[] {}).invoke(a, new Object[] {});
System.out.println("Field is:" + f.getName() + " value is:" + value);
}
}
}
}
class BVO {
private String name;
private int age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}

这个例子整个拷贝到一个类文件里面,执行一下就差不多看明白。
第3个回答  2012-11-29
用反射实现。
String xy="abc";

m instance = new m();
Class cls = m.class;
Field field=cls.getDeclaredField(xy);
System.out.println(field.get(instance));结果是3本回答被提问者和网友采纳
第4个回答  2012-11-29
通过反射具体代码
Class<m> cl=m.class;

Field field=cl.getDeclaredField(xy);
field.setAccessible(true);
Object value=(Object)field.get(new m());
System.out.println(value);
第5个回答  2012-11-29
用反射可以实现。
留一个邮件。这里一贴代码就会被删除。
相似回答