可以使用以下代码按名称访问类属性:
MyClass.class.getDeclaredField("myAtt");
是否可以创建一个反转的功能?即将属性转换为其名称的函数?
编辑:我正在添加此修改以使其更加清晰:
考虑以下课程:
class MyClass {
Integer myAttribute;
}
我正在寻找一个接受myAttribute
(本身或对它的引用.idk!)并返回"myAttribute"
字符串的函数。
答案 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);