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

怎么获取获取对象属性?

class Person()
{
int age = 10;
}

public static void main(String args[])
{
String str = "age";
/*
怎么根据str来获取class Person的对象的age属性的值
*/
Person p = new Person();
p.age;
p.str; //error
p.???; //
}

------解决方案--------------------
很多方法可以实现阿!可以通过添加get.set方法实现,可以通过注解来实现!
------解决方案--------------------
如果是全局变量可以用反射试试
------解决方案--------------------
一般属性都带get和set方法,所以
class Person() 

private int age = 10;
public void setAge(int a)
{
this.age = a;
}
public int getAge()
{
return this.age;
}
}

然后楼主是想要根据str的值来确定属性名字,然后得到结果。
可以变成根据属性名字,得到get方法,然后调用这个方法得到结果。

public static void main(String args[]) 

Person p = new Person();
String str = "age";
// 构造方法名
String methodName = "get" + str.substring(0, 1).toUpperCase() + str.substring(1);
// 得到方法
Class cls = p.getClass();
Method m = cls.getMethod(methodName, null);
// 调用方法得到结果
m.invoke(p, null);
}
------解决方案--------------------
三楼说的漂亮 学习了
------解决方案--------------------
Class cls = p.getClass(); 
这是什么意思??????????
_________________________________

通过对象来得到这个对象所属的类,再通过反射进行操作