我们有一个 Java 类 WebCenterGrid。此类充满了在网格中执行操作的方法,例如查找行、查找单元格值、对列进行排序。我们有几个使用这个类的类。使用它的类都引用不同的网格,但功能是相同的。
唯一不同的是如何创建网格。一些类进行填充网格的搜索(搜索也会刷新)。一些执行 updateList() 来更新网格等。
我想向 WebCenterGrid 添加一个方法来刷新网格。正如我所说,问题是每个方法都有不同的名称。
我想以某种方式将要调用的方法的名称传递给 WebCenterGrid 以进行刷新。我做了一些搜索,发现了一些我不太了解的关于 lambda 的内容。
我有一段时间没有使用 C++,但有一些方法可以将方法传递给那些方法。这个类是用 Java 而不是 C++ 编写的,但是有某种可以理解的等价物吗?
public class WebCenterGrid {
....
....
public void refresh(Method meth) {
meth();
}
}
最佳答案
基本上,有两种方法。
一种是使用反射,这意味着:依赖运行时类型信息,通常从原始字符串派生。就像说:我有一些 X 类对象,我想在该对象上调用名为“doTheFoo()”的方法。
参见 here对于所有的荣耀细节。
稍微好一点的方法是使用MethodHandle 类,而不是“原始”反射方法类。参见 here用于 handle 。
但是:反射是在运行时发生的。你的代码编译得很好,但如果你有任何细节错误,它会在运行时崩溃。
关于java - 如何实现一个 Java 方法,它将根据调用类的名称调用另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238719/