如何使用一个字符串值,以调用类属性
比方说,我有Java类:如何使用一个字符串值,以调用类属性
public class Animal
{
public String dog = "Rex";
}
在另一类我做这样的:
Animal mAnimal = new Animal();
String attributeCaller = "dog";
问题:如何通过在Java中使用String“attributeCaller”值调用mAnimal属性“dog”?我的意思是做这样的事情:
String dogName = mAnimal.attributeCaller;
它只是应该等于(方便调用Java的属性的方式):
String dogName = mAnimal.dog;
您可以使用Java反射API做到这一点:http://docs.oracle.com/javase/tutorial/reflect/。但是,除非真的有必要,否则我不会推荐使用反射。
+1的建议,但我建议反对也,反射用法不应该修复糟糕的设计... – 2014-11-03 13:39:30
PS:反射是缓慢的! http://stackoverflow.com/questions/435553/java-reflection-performance – 2014-11-03 13:54:11
您可以使用java反射API来检查任何对象的内容并实现它。 下面是一个例子:
String attributeCaller = "dog";
Animal mAnimal = new Animal();
Class<?> c = mAnimal.getClass();
Field f = c.getDeclaredField(attributeCaller);
f.setAccessible(true);
String dogName = (String) f.get(mAnimal);
请注意,这不适用于超领域的工作,得到超领域你必须通过c.getSuperclass()
迭代来查找字段
谢谢你的回答,它的工作:) – user2999943 2014-11-03 13:51:36
那些似乎是两个不同的类所以这个想法将无法工作。
您有一个名为Animal
的类,它具有名为dog
的字符串属性。现在在另一个类中创建了一个Animal
类型的对象,在这种情况下,该对象被称为,您必须通过对象名引用其属性,因此可以为变量dogName
分配对象的值,如:String dogName=mAnimal.dog;
或者您可能想要设置该对象的属性,如:mAnimal.dog = "Snoopy";
。
看来你可能会理解类和对象是如何工作的,所以我会推荐观看Java初学者的Lynda.com视频或者得到Deitel兄弟的Java如何编程。
如果这是有帮助的考虑给它一个点
不知道你到底在问什么? – brso05 2014-11-03 13:33:01
我没有得到它 – Michael 2014-11-03 13:34:56