Scala和'不同类型的特征实例Map:java.util.Map [K,V]'

时间:2016-11-07 08:59:09

标签: scala

我从Scala编译器得到了上面提到的错误。

我对Scala很新,并通过将我拥有的Java项目转换为Scala来进行实验。在我的Java项目中,我正在使用Apache'commons-chain',我有一个扩展'org.apache.commons.chain.impl.ContextBase'的类,我收到了这个错误。我在互联网上搜索似乎这个问题与类型擦除有关,但是我的班级没有做任何特别的事情,只是继承了这个类。

class SpecialContext extends ContextBase { }

这是我得到的确切错误..

Error:(10, 7) illegal inheritance; class SpecialContext inherits different type instances of trait Map: java.util.Map[K,V] and java.util.Map[K,V] class SpecialContext extends ContextBase {

Scala对我来说有一个吸引人的地方,虽然我可以使用Scala的优秀语言功能,但我仍然可以使用大量的Java开源库。在这次经历之后,我质疑这个事实,考虑到我的课没有做任何特别的事情,整合Java世界和Scala世界总是存在问题。

首先我的问题是关于上述问题的解决方案吗?

第二个问题是,您在集成Scala和Java库方面的经验如何?或者我是否遵循了错误的方式,是否有流行的Java库的端口到Scala,就像这里的命令链一样,或者让我们说Spring ....

感谢答案。

1 个答案:

答案 0 :(得分:1)

ContextChain的问题在于它使用原始类型:在https://commons.apache.org/proper/commons-chain/apidocs/org/apache/commons/chain/impl/ContextBase.html中,您可以看到MapHashMap而不是Map<Something, Something>

Java only supports raw types to integrate with old, pre-generics code (to remind you, Java 5 was released in 2004),所以你不应该在现代Java库中看到它们。 Scala根本不支持它们。