Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将属性转换为其名称_Java - Fatal编程技术网

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您有属性的名称吗??这并不是否决投票的理由,因为你对你的问题不是很清楚。。