Java 将属性转换为其名称
可以使用以下代码通过名称访问类属性:Java 将属性转换为其名称,java,Java,可以使用以下代码通过名称访问类属性: MyClass.class.getDeclaredField("myAtt"); 是否有可能创建一个可以反转的函数?i、 将属性转换为其名称的函数 编辑:我添加此编辑是为了更清楚地说明这一点: 考虑下面的类: class MyClass { Integer myAttribute; } 我正在寻找一个函数,它接受myAttribute(自身或对它的引用.idk!)并返回“myAttribute”字符串。尝试java.lang.reflect.Fi
MyClass.class.getDeclaredField("myAtt");
是否有可能创建一个可以反转的函数?i、 将属性转换为其名称的函数
编辑:我添加此编辑是为了更清楚地说明这一点:考虑下面的类:
class MyClass {
Integer myAttribute;
}
我正在寻找一个函数,它接受
myAttribute
(自身或对它的引用.idk!)并返回“myAttribute”
字符串。尝试java.lang.reflect.Field.getName()代码>尝试java.lang.reflect.Field.getName()代码>您可以使用以下方法:-
Field[] fields = MyClass.class.getDeclaredFields();
for (Field field: fields) {
System.out.println(field.getName());
}
PS:-你应该以大写字母开始命名你的类
更新:-好的,如果您有属性的名称:-私有字符串attrName代码>,您可以使用以下方法获取相应字段my:-
Field field = MyClass.class.getDeclaredField("attrName");
// Then do this. Which is meaningless. But I don't know why you want to do this
// Your fieldName will contain "attrName" which you know already
String fieldName = field.getName();
但是从上面的字段中获取名称是没有意义的。如果你只找这个,我会很惊讶。但您可以更清楚地回答您的问题。您可以使用以下方法:-
Field[] fields = MyClass.class.getDeclaredFields();
for (Field field: fields) {
System.out.println(field.getName());
}
PS:-你应该以大写字母开始命名你的类
更新:-好的,如果您有属性的名称:-私有字符串attrName代码>,您可以使用以下方法获取相应字段my:-
Field field = MyClass.class.getDeclaredField("attrName");
// Then do this. Which is meaningless. But I don't know why you want to do this
// Your fieldName will contain "attrName" which you know already
String fieldName = field.getName();
但是从上面的字段中获取名称是没有意义的。如果你只找这个,我会很惊讶。但是您可以更清楚地回答您的问题。如果我理解您的问题,您希望获得当前值与变量值匹配的字段名称
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);
如果我理解您的问题,您希望获得当前值与变量值匹配的字段的名称
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);
“将属性转换为其名称…”是什么意思?这似乎没有什么意义。您正在搜索Field.getName()?上述函数的输入是一个字符串
,输出是属性。我在寻找一个可以反转的函数。i、 获取一个属性作为输入(缺少引用,我不太确定这在Java中意味着什么,但在C++中它有意义),并返回其名称。e、 g.MyFunc(myAtt)
应返回“myAtt”
。类似于?@RohitJain的内容如果您先将属性转换为字段,则返回yes!“将属性转换为其名称…”是什么意思?这似乎没有什么意义。您正在搜索Field.getName()?上述函数的输入是一个字符串
,输出是属性。我在寻找一个可以反转的函数。i、 获取一个属性作为输入(缺少引用,我不太确定这在Java中意味着什么,但在C++中它有意义),并返回其名称。e、 g.MyFunc(myAtt)
应返回“myAtt”
。类似于?@RohitJain的内容如果您先将属性转换为字段,则返回yes!这要求我首先将属性转换为其对应的字段。我该怎么做?@AsgharKopak:你说的“皈依”是什么意思?这个句子毫无意义。不要重复不清楚的事情,试着在代码中创建一个实际的具体示例,准确地显示您希望作为函数的输入提供的内容。这需要我首先将属性转换为其对应的字段。我该怎么做?@AsgharKopak:你说的“皈依”是什么意思?这个句子毫无意义。与其重复不清楚的事情,不如尝试在代码中创建一个实际的具体示例,准确地显示您希望作为函数输入提供的内容。这就是转换所有属性。我正在寻找一种转换特定属性的方法。@AsgharKopak您有属性的名称吗??这不是否决投票的理由,因为你对你的问题不是很清楚。这是转换所有属性。我正在寻找一种转换特定属性的方法。@AsgharKopak您有属性的名称吗??这并不是否决投票的理由,因为你对你的问题不是很清楚。。