当前位置: 首页 > 知识库问答 >
问题:

查找没有NoClassDefFoundError的所有私有字段

华锦程
2023-03-14

我想通过枚举一组给定类的私有字段来动态创建一个类组合映射。这适用于具有一组独立类的getDeclaredFields()。

但是,如果类包含一个字段,该字段的类型是不可用的类,则调用将失败。有没有办法枚举私有字段,这样我就可以避免这种行为,例如一个接一个地捕捉异常并继续处理其余字段?

共有3个答案

申屠昌胤
2023-03-14

我没有得到你的答案。您可以将字段逐个枚举到try-catch(NoClassDeFoundError)块中,如果出现异常,请在catch块中对该字段执行任何操作,然后转到另一个字段。是你在找的东西,还是我误解了你的问题。

贺飞
2023-03-14

因此,我最终找到了解决方案:

我可以使用ASM库的ClassReader访问每个字段并获取其名称。

不幸的是,即使知道这个名字也不足以让反射变得有用,因为出于某种原因,Class.getDeclaredField(name_taken_from_classreader)仍然会调用getDeclaredFields()

这里可以找到指向我的讨论。

管玉堂
2023-03-14

不是通过反射,不是。动态获取给定类型的所有字段(即不知道其名称)的唯一方法是使用getDeclaredFields()。这是一个批处理查询,为每个字段构造一个字段实例。如果其中一个失败,则整个调用将失败。

 类似资料:
  • 情境:很少有应用程序使用Java DTO进行通信。我有一个类,它作为字段持有另一个类,它们持有另一个类(从顶部DTO到下面三个级别)。 字段可以是单个DTO或作为其他类(DTO)的ArrayList(排他)。所有类都是DTO。只有私有字段和公共setter和getter。 现在,当我得到top DTO时,有没有办法检查它并获得所有getter,包括嵌套的getter,通过getter,读取字段,然

  • 问题内容: 我想知道是否有一种方法可以获取java中某个类的所有私有字段及其类型。 例如,假设我有一堂课 现在,我想获得的所有私有字段(,,类)(如果不知道所有领域前期的名称),并检查它们的类型。 问题答案: 有可能获得与方法的所有字段的。然后,您必须检查每个字段的修饰符以查找私有字段: 请注意,这不会返回继承的字段。 最终,您可以使用Field.getType()方法获得字段的类型。

  • 现在,我想获取类的所有私有字段(、、)(事先不知道所有字段的名称)并检查它们的类型。

  • 问题内容: 我正在使用ColdFusion8。我想在ColdFusion中捕获一个异常,但是我不能…它仍然失败,并且将错误记录在exception.log文件中。这是我尝试过的。 但这是行不通的。您能告诉我该怎么做吗?我需要在特定位置而不是在Application.cfc函数中捕获此错误。 问题答案: 现在,我已经喝了更多的咖啡,我认为cfcatch无法捕获。根据文档,它仅处理Exceptions

  • 问题内容: 考虑这样的一张桌子 问题是,如果我给定值2和5,我应该得到102和105,而102和105都同时具有值​​2和5,或者如果我给定值1和3,我应该得到100和104。 我如何仅用一个sql命令就能做到这一点?我需要一个尽可能轻的查询。 并使用UNION,INTERSECTION或NESTED SQL,哪个更快,更慢,更重? 在此先感谢Ergec 问题答案: 有很多解决方案。除了Jhonn

  • 在python中,我有以下输入: 输出-这3个人的所有食物组合: 主要的问题是我不知道每个人的人数和食物的数量,所以我猜这是递归的。