如何在Java中使用反射将字段强制转换为特定类?

问题描述

Field 仅仅是字段的描述,而不是其中包含的值。

您需要首先获取值,然后可以将其强制转换为:

Card x =  (Card) field.get(this);

另外,您可能还希望允许子类,所以您应该这样做

  //  if (field.getType() == Card.class) {

  if (Card.class.isAssignableFrom(field.getType()) {

解决方法

我正在使用反射将类型Card为class的所有类的成员变量放入ArrayList<Card>实例。如何完成最后一部分(请参见下面的注释行)?

ArrayList<Card> cardList = new ArrayList<Card>();
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?

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”