示例无效:
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
我试过
Field f = this.getClass().getDeclaredField(code);
Class<?> c1 = f.getClass(); //Gives Field
Class<?> c2 = f.getDeclaringClass(); //Gives Brush
谢谢!
PS: 使用了In Java, how to get attribute given the string with its name?
中的示例代码答案 0 :(得分:2)
尝试:
field.getType();
这对我有用 (现在写这100次:“我会一直读javadoc并查询公共接口,然后再提出琐碎的问题”)。
答案 1 :(得分:1)
Field f = Brush.class.getDeclaredField("myColor");
Class<?> c = f.getType();
但是,您将无法使用它来删除代码中的强制转换。
答案 2 :(得分:1)