我想知道是否有任何像 Lisp 一样好的 Java 多方法实现/库。
我发现了这个明显冻结的:JMMF
您可以使用在 JVM 上运行并具有对多方法的内置支持的 Clojure。
I created this library which allows you to implement a Java interface using multimethods, by creating a proxy that satisfies the interface. I'm using it in a few projects and it's reasonably predictable, but read the documentation: Multimethods in Java can behave strangely.
有一些有效的替代方案可以处理多分派问题,也许这些替代方案几乎可以证明为什么它没有在该语言中实现。因此,您可以使用经典的访问者模式,也可以使用一定量的反射。
有一个过时的MultiJava 项目在 Java 中实现了多调度支持,还有几个其他项目使用反射来支持 Java 中的多方法:Java Multimethods,Java Multimethods Framework。也许还有更多。