当前位置: 首页 > 面试题库 >

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

扶杜吟
2023-03-14
问题内容

我正在使用反射将类型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?

问题答案:

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

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

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

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

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

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


 类似资料:
  • 问题内容: 我正在将iOS项目迁移到Swift。我正在上课。当我从Swift调用Objective C方法时,很多Objective C类型都转换为它们的Swift对应类型。 在我的情况下,目标C 转换为Swift的。现在是我的问题了。在我的Swift类中,我从Objective C对象获得了这样的数组。现在我处于Swift世界中,我想将此数组强制转换为特定类型,而不是,因为我确定知道此数组中存在

  • 我正在开发一种工具,用于将数据从自行开发的格式转换为 Parquet 和 JSON(用于 Spark、Drill 和 MongoDB 的不同设置),使用 Avro 和 Specific Mapping 作为垫脚石。我必须支持定期在客户端计算机上转换新数据,这就是为什么我尝试使用(Avro|编写自己的独立转换工具的原因镶木地板|JSON)切换,而不是使用Drill或Spark或其他工具作为转换器,如

  • 问题内容: 强制转换为文件时,编译器将其假定为JSX,例如: 给出一个错误 JSX元素类型’HtmlInputElement’不是JSX元素的构造函数 如何将TypeScript转换为文件? 问题答案: 该运算符被引入TypeScript 1.6,以替换文件中的强制类型转换,例如: TypeScript Wiki解释了1.6的更改: 它使新运算符成为默认的转换方式(消除了JSX表达式与TypeSc

  • 在通用堆栈的实现中,使用了以下习惯用法,并且没有任何问题 但是,当我尝试以下操作时,它会导致ClassCastException 这个你怎么解释?

  • 问题内容: 我正在从硬件设备读取8字节的数据。我需要将它们转换为数值。我想将它们转换为适合8个字节的长度。我对Java和低级数据类型操作不是很熟悉。我似乎有两个问题(除了几乎没有有关硬件的文档的事实外),这些字节期望是无符号的,所以我无法进行直接整数转换。我不确定它们是什么字节序。 任何意见,将不胜感激。 最终结束了(摘自一个星期前我可能应该已经读过的一些源代码): 问题答案: 对于字节序,请测试

  • 语境 我有控制器测试。我试图将对象UserDto转换为Json,使用的是Gson。 问题 Gson无法转换类型为LocalDate的字段生日。它向我显示错误消息:无法读取HTTP消息:org。springframework。http。转换器。HttpMessageNoteableException:JSON解析错误:意外标记(START\u对象),预期值\u字符串:预期数组或字符串。;嵌套异常为c