如何使用java中的reflection将字段强制转换为特定的类?
我使用reflection将类类型为Card
类的成员变量放入ArrayList
实例中。 我如何完成最后一部分(见下面的注释行)?
ArrayList cardList = new ArrayList(); Field[] fields = this.getClass().getDeclaredFields(); for (Field field : fields) { if (field.getType() == Card.class) { //how do I convert 'field' to a 'Card' object and add it to the 'cardList' here?
Field
只是Field
的描述,它不是包含在那里的值。
你需要先获取值,然后你可以投射它:
Card x = (Card) field.get(this);
此外,您可能也希望允许子类,所以您应该这样做
// if (field.getType() == Card.class) { if (Card.class.isAssignableFrom(field.getType()) {
ArrayList cardList = new ArrayList (); Field[] fields = this.getClass().getDeclaredFields(); for (Field field : fields) { if (field.getType() == Card.class) { Card tmp = (Card) field.get(this); cardList.add(tmp);