从属性名称中获取属性的类



样本不工作:

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();

您将无法使用它从代码中删除强制转换,但是

相关内容

  • 没有找到相关文章

最新更新