我有一个方法,大约有10行代码.我想创建更多做完全相同事情的方法,除了需要更改一行代码的小计算.这是一个完美的应用程序,可以传入函数指针来替换那一行,但是Java没有函数指针.我最好的 Select 是什么?

推荐答案

匿名内部类

假设您希望传入一个参数为String的函数,该参数返回int.
首先,如果不能重用现有的接口,则必须定义一个将函数作为其唯一成员的接口.

interface StringFunction {
    int func(String param);
}

接受指针的方法将只接受StringFunction个实例,如下所示:

public void takingMethod(StringFunction sf) {
   int i = sf.func("my string");
   // do whatever ...
}

被称为:

ref.takingMethod(new StringFunction() {
    public int func(String param) {
        // body
    }
});

EDIT:在Java 8中,可以使用lambda表达式调用它:

ref.takingMethod(param -> bodyExpression);

Java相关问答推荐

是否需要关闭Executors返回的执行器.newVirtualThreadPerTaskExecutor()?

将linkedHashMap扩展到Java中的POJO类

Java取消任务运行Oracle查询通过JDBC—连接中断,因为SQLSTATE(08006),错误代码(17002)IO错误:套接字读取中断

使用@MappdSuperClass扩展ParentClass&Won t继承ParentClass属性

Hibernate 6支持Joda DateTime吗?

将关键字与正文中的_Allowed匹配,但带有__Signing可选后缀

内存中的H2修剪尾随空格

GSON期间的Java类型擦除

类型集合的Jackson JsonNode:类型引用的对象读取器应该是Singleton吗?

基于配置switch 的@Controller的条件摄取

具有最大共同前景像素的图像平移优化算法

JavaFX复杂项目体系 struct

如何利用OpenTelemeter将初始值(零)输出到普罗米修斯

Cucumber java-maven-示例表-未定义一步

ReturnedRect在升级后反转

try 添加;按流派搜索;在Web应用程序上,但没有;I don’我不知道;It’这个代码错了

message.acknowledge()没有';在使用Spring Boot在ActiveMQ中读取消息后,t将消息出列

java.util.LinkedList()是如何成为MutableList的实例的?

仅允许使用 Spring Boot 3 从本地主机

JavaFX 不嵌入谷歌 map html