gpt4 book ai didi

java - 如何将一个具体方法作为参数传递给另一个具体方法

转载 作者:行者123 更新时间:2023-12-01 12:15:58 25 4
gpt4 key购买 nike

我是java新手,正在开发一个现实生活中的项目。到目前为止我有很多方法和大约 2500 行代码。许多方法都略有不同(通常只是一个标识符的差异),因此我必须一次又一次地复制代码并进行细微的更改。我想要的是将一个方法作为参数传递给另一个方法,我已经了解了 lambda 表达式但由于我自己的概念缺陷,我觉得它不够吸引人。因为它告诉定义要传递的每个方法的功能接口(interface)。但根据我的想法,它不会给我一个通用代码,以便我将来能够简单地添加一些其他表。

我放置了一段代码来演示并更好地解释我的问题。

if(houseTabPanel.getComponentCount()==0){
houseTableDb();
}
if(isSelected){
selection(houseTable);
}
else {
houseTable.setColumnSelectionAllowed(false);
houseTable.setRowSelectionAllowed(false);
houseTable.setCellSelectionEnabled(false);
Rselection(houseTable);
}

现在我有不同的方法,名为 houseTableDb() 、plotTableDb() 、 adminTableDb() 等。我想为这段代码创建一个方法并传递plotTableDb()等作为参数..类似...

public void genericMethod(JPanel p, JTable t, some method reference to use instead of houseTableDb){}

如果我的描述不够,请原谅我。任何回应都会受到内心的真正赞赏。

最佳答案

只要所有这些方法都具有相同的签名,您就可以使用具有该签名(返回值、参数列表)的单个方法来定义接口(interface)。然后编写实现该方法的类,每个类对应每个方法的实现。为了传递该方法,您创建该类的一个对象并传递该对象。对实际方法的调用被对接口(interface)中定义的方法的调用所取代。

interface Callee {
void meth();
}
class MethOne implements Callee {
public void meth(){...}
}

void caller( Callee callee ){
callee.meth();
}

Callee ofOne = new MethOne();
caller( ofOne );

但是为了避免所有这些麻烦:这就是添加 lambda 的原因......

关于java - 如何将一个具体方法作为参数传递给另一个具体方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27011985/

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