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

通过反射获取第一个父母的字段

胡鸿志
2023-03-14
问题内容

我正在尝试获取对象的第一个父项的字段和值。我当前的代码是这样的:

Class<? extends Object> cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
for ( Field field : fields )
{
    String fieldName = field.getName();
    String fieldValue = field.get(obj);
}

我的课程结构与此类似:

class A
{
    int x;
}

class B extends A
{
    int y;
}

class C extends B
{
    int z;
}

现在,我将一个C对象传递给该方法,并且我想从C和B中获取所有字段,而不是从A中获取所有字段。有没有办法做到这一点(使用反射,我不想实现其他方法)?


问题答案:

Luchian,使用getSuperclass()方法获取对Class对象的引用,该对象表示所讨论对象的超类类型。之后,您可以像在示例中一样轻松地获取字段。



 类似资料:
  • 问题内容: 我有以下实体: 还有以下EJB: 调用persist时,将引发具有以下根本原因的异常: 这是GlassFish 4.1的完整日志: 这是怎么引起的,我该如何解决? 问题答案: 我有同样的问题。这个错误似乎是从HB 4.3.6开始的,并且一直存在,我正在尝试4.3.10。具有相同的结果。 在我看来,访问实体字段的方式在HB 4.3.6+中已更改,可能与类加载器有关。在HB 4.3.6之前

  • 我有一个方法,它返回字符串类型的字段对象列表。 这个方法应该将所有字符串字段都大写: 问题是:"field.set(...)"不起作用。它应该将值大写并将其设置为该字段的新值,但它不起作用...我如何解决这个问题的任何想法?(PS:在真正的代码中,"something Class.class"被设置为真正的类名...) 正在生成的错误是field.get(this)方法(insdefield.se

  • 问题内容: 我在Java中有一个对象(基本上是VO),但不知道其类型。 我需要获取在该对象中不为null的值。 如何才能做到这一点? 问题答案: 你可以用来获取该类的所有声明的字段。你可以用来获取价值。 简而言之: 要了解有关反射的更多信息,请查看有关该主题的Sun教程。 就是说,这些字段不一定全部代表VO的属性。你希望确定以或开头的公共方法,然后调用它以获取真实属性值。 也就是说,可能会有更优雅

  • 问题内容: 我有一个这样声明的枚举: 现在,我想通过反射找出该枚举的键(SystemRunning,SystemStopped,tmpIdle): 输出为:RUNNING STOPPED IDLE 但是,我想使用Strings SystemRunning,tmpIdle等。 提前非常感谢您。 问题答案: 首先,您需要使您的非静态变量。 然后,您需要在枚举中添加getter方法,该方法将返回 然后将

  • 问题内容: 我在JPA中更新对象时遇到问题 我有豆子用户 和 当尝试更新时给我异常:当表评级包含行时,无法通过反射获得字段值 错误TransactionInterceptor:434-应用程序异常被提交异常com.vodafone.visradio.dataaccess.exception.DataAccessException覆盖:org.hibernate.PropertyAccessExce

  • 主要内容:使用反射值对象包装任意值,从反射值对象获取被包装的值当我们将一个接口值传递给一个 reflect.ValueOf 函数调用时,此调用返回的是代表着此接口值的动态值的一个 reflect.Value 值。我们必须通过间接的途径获得一个代表一个接口值的 reflect.Value 值。 reflect.Value 类型有很多方法( https://golang.google.cn/pkg/reflect/)。我们可以调用这些方法来观察和操纵一个 ref