我有一个大约十行代码的方法。我想创建更多功能完全相同的方法,只是进行少量计算会更改一行代码。这是传入函数指针以替换该行的理想应用程序,但是Java没有函数指针。我最好的选择是什么?
匿名内部阶级
假设你要传入的函数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
}
});
编辑:在Java 8中,你可以使用lambda表达式来调用它:
ref.takingMethod(param -> bodyExpression);
我一直在使用函数指针,就像c中的这种格式。我偶尔会用到,我想知道c 11/14中是否引入了其他东西作为替代。 我确实看了这个问题,但无法理解与传统使用函数指针相比的任何优势。另外,我想问,使用函数指针有什么问题(不推荐)吗,因为我从未见过任何人使用它们。或任何其他替代方案。
问题内容: 对于我的Java游戏服务器,我发送数据包的操作ID,该操作ID基本上告诉服务器该数据包的用途。我想将每个动作ID(一个整数)映射到一个函数。有没有不用开关就可以做到这一点的方法? 问题答案: 这个如何? (如果需要传递一些参数,请使用具有合适参数的函数定义自己的接口,并使用该接口代替Runnable)。
本文向大家介绍什么是指向指针的指针? 相关面试题,主要包含被问及什么是指向指针的指针? 时的应答技巧和注意事项,需要的朋友参考一下 指针指向的变量是一个指针,即具体内容为一个指针的值,是一个地址. 此时指针指向的变量长度也是4位.
问题内容: 这可能是普通且琐碎的事情,但我似乎在寻找具体答案时遇到了麻烦。在C#中,有一个委托的概念,它与C ++中的函数指针紧密相关。Java中是否有类似的功能?考虑到指针的缺失,最好的方法是什么?需要明确的是,我们在这里谈论头等舱。 问题答案: 类似函数指针的功能的Java习惯用法是实现接口的匿名类,例如 更新:在Java 8之前的Java版本中,以上是必要的。现在,我们有更好的替代方法,即l
一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个 指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针就是 函数指针。 函数指针的定义形式为: returnType (*pointerName)(param list); returnType
本文向大家介绍什么是数据结构中的指针? 相关面试题,主要包含被问及什么是数据结构中的指针? 时的应答技巧和注意事项,需要的朋友参考一下 其实就是指向一块内存的地址,通过指针传递,可实现复杂的内存访问. 函数指针? 指向一块函数的入口地址. 指针作为函数的参数? 比如指向一个复杂数据结构的指针作为函数变量 这种方法避免整个复杂数据类型内存的压栈出栈操作,提高效率. 注意:指针本身不可变,但指针指向的