gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:06:28 25 4
gpt4 key购买 nike

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

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

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

我想以某种方式将要调用的方法的名称传递给 WebCenterGrid 以进行刷新。我做了一些搜索,发现了一些我不太了解的关于 lambda 的内容。

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

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

最佳答案

基本上,有两种方法。

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

参见 here对于所有的荣耀细节。

稍微好一点的方法是使用MethodHandle 类,而不是“原始”反射方法类。参见 here用于 handle 。

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

因此我建议研究基于 Function 的 lambdas , 请参阅 here .

关于java - 如何实现一个 Java 方法,它将根据调用类的名称调用另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54238719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com