如何实现一个 Java 方法,该方法将根据调用类的名称调用另一个方法?

2024-04-16

我们有一个 Java 类 WebCenterGrid。这个类充满了在网格中执行操作的方法,例如查找行、查找单元格值、对列进行排序。我们有几个类使用这个类。使用它的类都引用不同的网格,但功能是相同的。

唯一不同的是如何创建网格。有些类会进行填充网格的搜索(搜索也会刷新)。有些执行 updateList() 来更新网格等。

我想向 WebCenterGrid 添加一个方法来刷新网格。问题是正如我所说,每种方法都有不同的名称。

我想以某种方式将调用方法的名称传递到 WebCenterGrid 中以进行刷新。我做了一些搜索,发现了一些关于 lambda 的东西,但我并不真正理解。

我有一段时间没有使用 C++,但有一些方法可以将方法传递到这些方法中。这个类是 Java 类而不是 C++ 类,但是有某种可以理解的等价类吗?

 public class WebCenterGrid {
    ....
    ....
    public void refresh(Method meth) {
           meth();
    }
 }

基本上有两种方法。

一是使用反射,这意味着:依靠runtime类型信息,通常源自原始字符串。就像说:我有一些 X 类的对象,我想在该对象上调用名为“doTheFoo()”的方法。

See here https://stackoverflow.com/questions/37628/what-is-reflection-and-why-is-it-useful所有荣耀细节。

一个稍微好一点的方法是使用方法句柄类,而不是“原始”反射 Method 类。看here https://www.baeldung.com/java-method-handles用于手柄。

但是:反射是在运行时发生的。你的代码编译得很好,但如果你有任何细节错误,它就会在运行时崩溃。

因此我建议研究 lambdas,基于Function https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html, see here https://www.geeksforgeeks.org/function-interface-in-java-with-examples/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现一个 Java 方法,该方法将根据调用类的名称调用另一个方法? 的相关文章

  • 具有 OpenGL ES 3.1 上下文的 GLSurfaceView

    我正在使用 OpenGL 开发 Android 我知道如何使用GLSurfaceView及其自定义派生类 使用以下方法创建 OpenGL ES 2 0 上下文GLSurfaceView setEGLContextClientVersion
  • 如何通过电子邮件发送保存的 CSV 文件或在 Android 中使用 Google Drive 上传?

    我有一个简单的日志记录应用程序 它将数据收集到三个数组列表中 我想将其保存到 CSV 文件中 然后共享到 Google Drive 电子邮件等 这是我保存数据的方法 StringBuilder data new StringBuilder
  • 如何从 TextInputLayout 中删除底部填充

    第一张图就是我想要的 第二张图是我实现的 正如您所看到的 TextInputLayout 的底部有一个填充 这使得灰色背景溢出超过 edittext 行 请不要建议负边距或填充 因为它在较新的 API 中不起作用 这是我为第一个文本输入布局
  • C++ 相当于 Java 的 System.arraycopy

    我正在尝试移植一些大量使用 System arraycopy 方法的 Java 代码 并想知道 C 中是否有等效的方法 基本上我想要有 n 个字节数组并将它们组合成一个大数组 每个初始数组的长度都可以是可变的 所以我不想经历计算结束数组长度
  • 了解 hibernate @Type 注解

    来自休眠官方文档 http docs jboss org ejb3 app server HibernateAnnotations reference en html single d0e2018 org hibernate annotat
  • javax.validator 与 spring 组件

    我将 javax validation 与 Spring 一起使用 在我的测试 常规 中 我明确创建了验证器 import javax validation Validation import javax validation Valida
  • 桌面应用程序的对象持久化策略

    我正在开发一个基于 Java 的桌面应用程序 我需要保留一些从应用程序对象模型生成的数据 最好保存到文件中 还需要保护持久文件 以便其他人无法从数据中获取对象模型详细信息 执行这些操作的最佳策略是什么 我的印象是这些要求对于桌面应用程序来说
  • 错误org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名为“entityManagerFactory”的bean时出错

    我想将我的 java CRUD 应用程序与红色节点连接 但当我运行 Java 应用程序时 我总是收到此错误 我试图解决它 但我不能 这是错误 2022 05 10 11 33 43 959 INFO 12192 restartedMain
  • Java中如何让另一个线程休眠

    我有一个扩展 Thread 的类 这个线程在运行时大部分时间都在睡眠 它会执行一个检查 如果 true 执行一个简单的操作 然后睡眠 1 2 秒并重复 该类还有一个由其他线程调用的公共方法 如果调用此函数 我希望线程在已经休眠的情况下休眠更
  • 如何在 Spring Boot WebMvcTest 中设置上下文路径

    我正在尝试从 Spring Boot 应用程序测试我的 Rest 控制器 并希望控制器在与生产中相同的路径下可用 例如我有以下控制器 RestController Transactional public class MyControlle
  • 使用 lambda 内联过滤避免意外 null

    我有每个元素的列表 我想这样做 使用Java 8 disabledUsersOnLDAP stream forEach user gt usersRepository findEnabledByUsername user getUserNa
  • 使用反射检查java中的字段是否为final

    我正在编写一个类 它在某些时候必须拥有它的所有内容Fields 从该类的另一个项目分配 我通过反思做到了 for Field f pg getClass getDeclaredFields f set this f get pg 问题是 这
  • 使用 Sheets API v4 获取与 Google 帐户关联的所有电子表格的列表

    使用 Google Sheets API v4 我希望获取附加到我的帐户的电子表格列表 我做了很多研究 但还没有找到任何解决方案 v4 API 不提供列出电子表格的方法 您需要使用 Drive API 这从以前的 API 页面迁移 http
  • 如何在Java中读取文件的最后“n”个字节

    如何在不使用 RandomAccessFile 的情况下从文件中读取最后 n 个字节 我的文件中的最后 6 个字节包含写回文件时的重要信息 我需要写入原始文件 然后将最后 6 个字节附加到其他地方 有什么指导吗 谢谢 你必须使用随机存取文件
  • 如何为 JAXB MOXy 编写 JsonStructure (JSR-353) XmlAdaptor?

    我需要将一些任意 JSON 内容包装到 POJO 中 然后使用 MOXy JAXB 序列化为 JSON 但无法弄清楚如何绑定JsonObject与 JAXB 一起 我只需要整理JsonObject 不需要解组 即拥有 POJO XmlRoo
  • java有跳过列表实现吗

    I find ConcurrentSkipListSet http download oracle com javase 6 docs api java util concurrent ConcurrentSkipListSet html在
  • 多行 JTable 单元格在编辑期间不是多行的

    我正在开发一个应用程序 它有一个需要多行单元格的 JTable 因此 我扩展了 JTextArea 一切都显示出来了 但是当我尝试编辑单元格时 文本显示为单行 编辑后变为多行 我希望文本在编辑过程中保持多行 有没有办法做到这一点 创建您的表
  • 使用 Scanner 类输入

    我从过去的经历中了解到的是nextInt or nextDouble 将继续搜索 直到在同一行或下一行中找到整数或双精度数 这并不重要 同时通过扫描器类读取字符串作为输入next 考虑空格之前的那些字符串并将光标保持在同一行 其中nextL
  • 如何使用 Jericho HTML 解析器获取特定标签之间的文本和其他标签?

    我有一个包含特定标签的 HTML 文件 例如 table cellspacing 0 结束标签是 table 现在我想获取这些标签之间的所有内容 我正在 Java 中使用 Jericho HTML 解析器来解析 HTML 是否可以获取 Je
  • 使用 FileOutputStream 创建 UTF-8 PDF 文件

    我正在使用 JasperReports 和 DynamicReports 以及这段 java 代码来创建包含 utf 8 字符的 pdf 格式的报告 问题是生成的 pdf 文件根本不包含 utf 8 字符 就像它们已被替换为 使用 Outp

随机推荐