当前位置: 首页 > 面试题库 >

Java中的函数指针/代理?

楚宪
2023-03-14
问题内容

对于我的Java游戏服务器,我发送数据包的操作ID,该操作ID基本上告诉服务器该数据包的用途。我想将每个动作ID(一个整数)映射到一个函数。有没有不用开关就可以做到这一点的方法?


问题答案:

这个如何?

HashMap<Integer, Runnable> map = new HashMap<Integer, Runnable>();
map.put(Register.ID, new Runnable() { 
    public void run() { functionA(); }
});
map.put(NotifyMessage.ID, new Runnable() { 
    public void run() { functionB(); }
});
// ...
map.get(id).run();

(如果需要传递一些参数,请使用具有合适参数的函数定义自己的接口,并使用该接口代替Runnable)。



 类似资料:
  • 问题内容: 这可能是普通且琐碎的事情,但我似乎在寻找具体答案时遇到了麻烦。在C#中,有一个委托的概念,它与C ++中的函数指针紧密相关。Java中是否有类似的功能?考虑到指针的缺失,最好的方法是什么?需要明确的是,我们在这里谈论头等舱。 问题答案: 类似函数指针的功能的Java习惯用法是实现接口的匿名类,例如 更新:在Java 8之前的Java版本中,以上是必要的。现在,我们有更好的替代方法,即l

  • 一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个 指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针就是 函数指针。 函数指针的定义形式为: returnType (*pointerName)(param list); returnType

  • 问题内容: 我已经阅读了这个问题,但是我仍然不确定是否可以在Java中将指向方法的指针保留在Java数组中,如果有人知道这样做是否可行,那将是真正的帮助。我正在尝试找到一种优雅的解决方案,在不编写成百上千个“ if”的情况下保留字符串列表和相关函数。 干杯 问题答案: Java本身没有函数指针(或C#说法中的“委托”)。这种事情往往是用匿名子类来完成的。

  • 我一直在使用函数指针,就像c中的这种格式。我偶尔会用到,我想知道c 11/14中是否引入了其他东西作为替代。 我确实看了这个问题,但无法理解与传统使用函数指针相比的任何优势。另外,我想问,使用函数指针有什么问题(不推荐)吗,因为我从未见过任何人使用它们。或任何其他替代方案。

  • 问题内容: 我对lambda不太了解。 如果,为什么该方法仍然有效。毕竟,该对象应该由GC删除,因为没有指向该对象的指针。 还有一件事,为什么我在这里不需要返回声明? 问题答案: 在JLS,第15.13.3描述方法引用的运行评估。 方法参考表达式评估的时间比lambda表达式(第15.27.4节)更复杂。 当方法引用表达式的::分隔符之前具有表达式(而不是类型)时,将立即对该子表达式求值。该 评价

  • 本文向大家介绍指针数组、数组指针、函数指针的区别?相关面试题,主要包含被问及指针数组、数组指针、函数指针的区别?时的应答技巧和注意事项,需要的朋友参考一下 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称。 数组指针:首先它是一个指针,它指向一个数组。在32