如何使用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);