在使用TypedActor.get(system)
intellij时拼写错误'ambiguous method call',这里system
是ActorSystem
类型。我发现在反编译的TypedActor
类文件的源代码中有两个方法具有相同的签名:
据我所知,在Java中两个方法不可能有相同的签名,那么这里出了什么问题呢?调用TypedActor.get(ActorSystem system)
方法的正确方法是什么?
我使用的AKKA版本是2.5.11,jar文件是akka-actor_2.13.0-M3。
2条答案
按热度按时间w9apscun1#
这是一个由Scala编译器(https://github.com/akka/akka/issues/25449)中的问题引起的bug,它已经被修复,所以升级到更新的Akka版本应该可以修复它。
nwlls2ji2#
编辑:根据@johanandren below,这是一个bug,现在已经修复。
你可以使用
TypedActor$.MODULE$.get(system)
,这是因为Scala对象被转换成单例类的方式。Scala对象
TypedActor
实际上被转换为类TypedActor$
,其中包含一个名为MODULE$
的单例示例。这是因为JVM字节码实际上并不支持Scala的单例对象,所以很多Scala名称都是混乱的,很难从Java中访问。