将属性转换为其名称

时间:2012-10-17 12:17:34

标签: java

可以使用以下代码按名称访问类属性:

MyClass.class.getDeclaredField("myAtt");

是否可以创建一个反转的功能?即将属性转换为其名称的函数?

编辑:我正在添加此修改以使其更加清晰:
考虑以下课程:

class MyClass {
    Integer myAttribute;
}

我正在寻找一个接受myAttribute(本身或对它的引用.idk!)并返回"myAttribute"字符串的函数。

3 个答案:

答案 0 :(得分:3)

尝试java.lang.reflect.Field.getName();

答案 1 :(得分:2)

您可以使用Field#getName方法: -

Field[] fields = MyClass.class.getDeclaredFields();

for (Field field: fields) {
    System.out.println(field.getName());
}

PS : - 您应该以{{1​​}}个字母开头命名您的课程。

更新: - 好的,如果你有你的属性名称: - uppercase,你可以使用我的相应字段: -

private String attrName;

但从上面的字段中获取名称没有意义。如果你只是在寻找这个,我会感到惊讶。但你可以更清楚你的问题。

答案 2 :(得分:0)

如果我理解你的问题,你想得到当前值与变量值匹配的Field的名称。

private String getAttributeName(Object myInstance, Object myValue) throws IllegalAccessException
{
    Field[] fields = MyClass.class.getDeclaredFields();
    for (Field each : fields)
    {
        if (each.get(myInstance).equals(myValue))
            return each.getName();
    }
    return null;
}

然后你可以打电话,

    getAttributeName(myInstance, myValue);