Java 如何获取属性名而不是属性值?
我有这门课:Java 如何获取属性名而不是属性值?,java,reflection,properties,Java,Reflection,Properties,我有这门课: public class Person { private String name; private int age; } 我想制作一个Excel文件,在我将这些值放入Excel表之前,我需要将名称和年龄作为表中的列。我只需要知道如何获取属性名(而不是值) 例如,如果我有: name=“Marc” 年龄=26 我想先得到“姓名”和“年龄”,而不是“马克”和“26岁”。我该怎么做 需要明确的是,属性的名称和数量可能会有所不同,所以我不能硬编码“name”和“ag
public class Person {
private String name;
private int age;
}
我想制作一个Excel文件,在我将这些值放入Excel表之前,我需要将名称和年龄作为表中的列。我只需要知道如何获取属性名(而不是值)
例如,如果我有:
name=“Marc”年龄=26 我想先得到“姓名”和“年龄”,而不是“马克”和“26岁”。我该怎么做 需要明确的是,属性的名称和数量可能会有所不同,所以我不能硬编码“name”和“age”,我需要某种方法来迭代并获取它。我知道如何迭代并将其放入工作表中。我所需要的帮助就是如何获取属性名
我得到的最接近的字段是getDeclaredFields(),但是我不能再进一步了,因为我无法从该字段类型中获得任何信息。您的思路是正确的
getDeclaredFields()
返回一个字段[]
。在这个数组上迭代并访问每个字段上的getName()
方法应该是一个技巧
要使用您的示例:
Person p = new Person();
Field[] fields = Person.class.getDeclaredFields();
for (Field field : fields) {
boolean accessible = field.isAccessible();
try {
field.setAccessible(true);
System.out.println(field.getName() + " - " + field.get(p));
} catch (IllegalAccessException e) {
e.printStackTrace();
} finally {
field.setAccessible(accessible);
}
}
Person.class.getDeclaredFields()
它重新运行字段[],您可以获取每个字段的信息。您可以获取字段名。以下是一个例子:
Field[] allFields = Person.class.getDeclaredFields();
for(Field f:allFields)
System.out.println(f.getName());
这应该行得通。稍后,您可以使用字段数组的索引进行迭代以存储/写入数据
Field[] fields = YourClassName.class.getFields();
如果您不必按原样使用该类,并且为了避免使用反射,我建议您使用HashMap,这样您就可以添加键值元素。这样,您将拥有对名称和值的“合法”访问权。例如,您可以映射.put(“name”、“George”);然后你想怎么用就怎么用。您可以在此处查看详细信息您可能还需要设置字段。setAccessible(true)代码>@Lino好的观点,我将在中编辑它。