java - 如何在 java 中使用反射将字段转换到特定类?

标签 java reflection

我正在使用反射来放置类中所有类型为 Card 的成员变量类成 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?

最佳答案

Field只是对字段的描述,并不是里面包含的值。

需要先获取值,然后才能进行转换:

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

此外,您可能还想允许子类,所以您应该这样做

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

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

关于java - 如何在 java 中使用反射将字段转换到特定类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27006381/

相关文章:

c# - 获取特定类中使用的类型

java反射 - 如何获取特定属性的名称

java - Rampart PostDispatchVerificationHandler : InvalidSecurity - Security policy not found

java - 使用 Criteria 运行子查询时出现 ClassCastException (String to Long)

java - getDeclaredMethods() 和隐藏的父类(super class)静态方法

c# - .NET/C# - 反射帮助 - 程序集中的类

Java:运行时方法解析

c# - 如何从库中初始化一个类?

java - Spring Shell - 使用和执行

java - IntelliJ 可以为 Java 类生成可链接的 setter /修改器吗?