在Java中实现异构函数映射的方法有哪些?它们的优缺点是什么?

在Java中实现异构函数映射的方法有哪些?它们的优缺点是什么?,java,methods,map,functor,Java,Methods,Map,Functor,我想用Java实现某种命令模式。我想要一个像地图一样的结构。所以我有一个对象映射,HashMap,LinkedHashMap或者任何关联的。。。其中键是字符串命令,值是我希望通过键调用的函数。这些函数必须是异构的,因为它们可以有不同的返回值、参数数量、名称和不同的签名。在C++中,例如,我可以通过Boosi:函数创建函数指针或函子的映射。 因此,如果我们在Java中从广义上看,有人能说出实现这种习惯用法或模式的所有方法吗。我知道两种方法: 反射减号:缓慢而丑陋 使用接口和匿名类减号:函数必须具有

我想用Java实现某种命令模式。我想要一个像地图一样的结构。所以我有一个对象映射,HashMap,LinkedHashMap或者任何关联的。。。其中键是字符串命令,值是我希望通过键调用的函数。这些函数必须是异构的,因为它们可以有不同的返回值、参数数量、名称和不同的签名。在C++中,例如,我可以通过Boosi:函数创建函数指针或函子的映射。 因此,如果我们在Java中从广义上看,有人能说出实现这种习惯用法或模式的所有方法吗。我知道两种方法:

反射减号:缓慢而丑陋 使用接口和匿名类减号:函数必须具有相同的签名 详细的解释,文章链接等都会很有帮助

java中没有函数指针,只有接口 我的反思并不像许多人想象的那样缓慢和丑陋 您还需要知道如何调用C++中需要知道的函数。 所以拥有相同的签名并不是那么糟糕,只需要一个非常灵活的签名,比如 无效命令对象。。。args 编辑: 关于反射性能: 看看下面的答案:

你可以看到,仅仅调用一个反射对象并没有那么慢,按名称查找需要花费很多时间,我想在你的情况下,每个函数不需要超过一次

java中没有函数指针,只有接口 我的反思并不像许多人想象的那样缓慢和丑陋 您还需要知道如何调用C++中需要知道的函数。 所以拥有相同的签名并不是那么糟糕,只需要一个非常灵活的签名,比如 无效命令对象。。。args 编辑: 关于反射性能: 看看下面的答案:


您可以看到,仅仅调用反射对象并没有那么慢,按名称查找需要花费大量时间,我认为在您的情况下,每个函数不需要多次调用反射对象

很难说,因为我们不知道您希望如何使用API,但听起来您的设计并不是真正面向对象的。。。考虑修改你的设计。@你的设计不是真正的面向对象。如果你更仔细地阅读我的问题,你会看到我没有说一个关于OO设计的单词。我想实现一个与功能设计和FD模式更相关的函数模式。我很感兴趣的是java如何处理这种多方面的问题,但是你提到了java,java是一种面向对象的语言,因此通常建议遵循面向对象的设计。很难说,因为我们不知道你想如何使用API,但听起来你的设计并不是真正面向对象的。。。考虑修改你的设计。@你的设计不是真正的面向对象。如果你更仔细地阅读我的问题,你会看到我没有说一个关于OO设计的单词。我想实现一个与功能设计和FD模式更相关的函数模式。我很感兴趣的是java如何处理这种多方面的问题,但是你提到了java,java是一种面向对象的语言,因此通常建议遵循面向对象的设计。它的反射总是如此缓慢和肮脏,但是人们说它从不做性能测试。而且它也不脏,因为你可以用它们做其他方式不可能做的事情。再加上@annotations,你可以做很多很酷的事情。真的。我最近使用反射制作了一个动态对象复制库,性能非常好。当然,在某些情况下,它会受到惩罚,但由于它不打算用于性能关键的场景,具体来说,它不应该受到憎恨。这毕竟是程序员的决定。它的反映总是如此缓慢和肮脏,但人们说永远不会做性能测试。它的imo也不脏,因为你可以用其他方式处理它们。再加上@annotations,你可以做很多很酷的事情。真的。我最近使用反射制作了一个动态对象复制库,性能非常好。当然,在某些情况下,它会受到惩罚,但由于它不打算用于性能关键的场景,具体来说,它不应该受到憎恨。这毕竟是程序员的决定。