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

辅助类中字段的Java反射

吕鸿文
2023-03-14

我有下面的泛型函数,我想从多个类中使用。问题是,如果我从帮助器类调用它,由于可见性,我无法获得字段对象。

public <T> List<T> descendingServices(Class<T> cls) {
  List<T> descendings = new ArrayList<>();

  for (Field field : EnvironmentServiceImpl.class.getDeclaredFields()) {
    Object obj;
    try {
      obj = field.get(this);
      if (cls.isInstance(obj)) {
        T descending = (T) obj;
        descendings.add(descending);
      }
    } catch (IllegalAccessException e) {
    }
  }

  return descendings;
}

共有1个答案

余靖
2023-03-14

解决方案是考虑如果不首先使用反射,将如何访问该字段。然后,您可以在了解如何访问数据后添加反射代码。

如果您无法访问该字段,因为它不是public,那么声明该字段的类应该声明一个publicgetter方法,为您访问该字段,并为其本身提供封装。

如果需要,将getter方法添加到类中。然后调用getMethods方法,而不是getDeclaredFields。您可能需要绕过不想处理的其他方法。

从Javadocs forgetMethods:

返回一个数组,该数组包含方法对象,这些对象反映此对象表示的类或接口的所有公共方法,包括类或接口声明的方法以及从超类和超接口继承的方法。

 类似资料:
  • Hyperf 提供了大量便捷的辅助类,这里会列出一些常用的好用的,不会列举所有,可自行查看 hyperf/utils 组件的代码获得更多信息。 协程辅助类 Hyperf\Utils\Coroutine 该辅助类用于协助进行协程相关的判断或操作。 id(): int 通过静态方法 id() 获得当前所处的 协程 ID,如当前不处于协程环境下,则返回 -1。 create(callable $call

  • 主要内容:文本,背景,其他,更多实例,实例,实例,实例,实例,实例,实例,实例本章将讨论 Bootstrap 中的一些可能会派上用场的辅助类。 文本 以下不同的类展示了不同的文本颜色。如果文本是个链接鼠标移动到文本上会变暗: 类 描述 实例 .text-muted "text-muted" 类的文本样式 尝试一下 .text-primary "text-primary" 类的文本样式 尝试一下 .text-success "text-success" 类的文本样式 尝试一下

  • 我有一个. JAR文件,里面有很多类。第一,我需要的设置为final,所以我不能扩展它。有一种方法,我基本上必须扩展和修复,否则一切都会崩溃。我该怎么做呢?我知道反射和Javassist可以用来做这件事,但是我不知道怎么做。其他任何工具也是可以接受的,只要能用就行。

  • 问题内容: 我有3个表:User,Community,community_members(用于用户和社区的many2many关系)。 我使用Flask-SQLAlchemy创建此表: 现在,我想像这样向community_members添加其他字段: 现在在python shell中,我可以这样做: 创建社区: 将成员添加到社区: 好的,这可行。 但是,现在我如何获得community_membe

  • 与 GDI 的类似,在 GDI+ API 中也定义了许多绘图的辅助类,常用的有点、大小和矩形 等几何类。它们都是没有基类的独立类,被定义在头文件 GdiplusTypes.h 中。与 GDI 不同 的是,在 GDI+中新增加了浮点型的几何类。 浮点数版的几何对象和绘图方法,是 GDI+新增的功能,这些在各种工程技术领域都非 常有用。因为一般的实际图形设计,都是基于实数坐标的。包括机械(../轮船/

  • 问题内容: 对于某些类型的sql查询,数字辅助表可能非常有用。可以将其创建为具有特定任务所需行数的表,也可以将其创建为返回每个查询所需行数的用户定义函数。 创建此类功能的最佳方法是什么? 问题答案: 首先,具有14种不同解决方案的文章非常适合查看动态创建Numbers / Tally表的不同方法,但是正如文章和所引用的线程中指出的那样,有一个非常重要的报价… “关于效率和性能的建议通常是主观的。无