样本不工作:
Object o = ...; // The object you want to inspect
Class<?> c = o.getClass();
Field f = c.getDeclaredField("myColor");
f.setAccessible(true);
String valueOfMyColor = (String) f.get(o);
这段代码中的问题是,您必须使用String类强制转换。我想要的是,能够从一个属性的名称中找到它的类。
例如:
class Brush {
Color myColor;
}
//Somewhere else, in a far far away galaxy
Class<?> c = getMyClassFromAttributeName("myColor");
// and c should be of type Color
I've try
Field f = this.getClass().getDeclaredField(code);
Class<?> c1 = f.getClass(); //Gives Field
Class<?> c2 = f.getDeclaringClass(); //Gives Brush
谢谢!
PS:使用的示例代码从Java中,如何获得属性给定的字符串与它的名字?
try:
field.getType();
这对我有用(现在把这句话写100遍:"在问一些琐碎的问题之前,我总是会阅读javadoc并查找公共接口")。
使用Field.getType();
的例子:
Class<?> fieldType = f.getType(); //Should return Color.
Use Field.getType().
Field f = Brush.class.getDeclaredField("myColor");
Class<?> c = f.getType();
您将无法使用它从代码中删除强制转换,但是