我们有一个 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(使用前将#替换为@)