Scala 2.8中的classOf[]与2.7有何不同?

3

我有一个来自Java的接口

public class IJava
{
   ...
   public java.lang.Class getType();
   ...
}

在Scala中,它是继承而来的。

class CScala
{
    def getType() = classOf[Foo]
}

这段代码在Scala 2.7.7版本中可以正常运行,但在2.8.0.RC1版本中出现了问题

type mismatch;  found   : java.lang.Class[Foo](classOf[Foo])  
required: java.lang.Class

我怎样在Scala 2.8中获取java.lang.Class

2个回答

6
尝试将getType()的返回类型注释为java.lang.Class。这里的问题是您在接口上使用了原始类型,原始类型与Scala的兼容性不佳。

1

注释返回类型 java.lang.Class[Foo]

class CScala { def getType() : java.lang.Class[Foo] = classOf[Foo] }

没问题。

但是,子类可以改变方法签名。有趣!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接