我知道在JavaScript中你可以调用myCustomObject['something']
并获取值。
有没有办法在Java中做到这一点?
我有一个自定义对象学生:
public class Student {
private String name;
private String id;
private String year;
private String homeroom;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getId() { return id; }
public void setId(String id) { this.id = id; }
public String getYear() { return year; }
public void setYear(String year) { this.year = year; }
public String getHomeroom() { return homeroom; }
public void setHomeroom(String homeroom) { this.homeroom = homeroom; }
}
我想要一种方法来调用方法来获取Student.getValueForKey(key)
之类的属性。其中key
可以是Student类的任何属性:name,id,year等。
我不想调用实际的getter:getId()
,getYear()
等...
我尝试了student[id]
,但对象不是数组。我需要一种通过变量获取属性的方法。
答案 0 :(得分:0)
你不能,这是在java中调用getId()的基础,另一种方式是通过反射调用它,但它会影响你的性能,以及它需要更多代码来设置
答案 1 :(得分:0)
1)您可以使用反射来检索与String name参数匹配的字段名称并获取相关值。
2)一个更优雅的解决方案,如果合适的话可以用Enum
替换Student类来存储学生和EnumMap
实例的属性来代表一个人:
public enum StudentAttributes {
NAME, ID, YEAR, HOME_ROOM;
}
然后做:
EnumMap<StudentAttributes, String> studentOne = new EnumMap<StudentAttributes, String>(StudentAttributes.class);
studentMap.put(StudentAttributes.NAME, "john");
studentMap.put(StudentAttributes.YEAR, "1945");
...
String name = studentMap.get(StudentAttributes.NAME);
String year = studentMap.get(StudentAttributes.YEAR);