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

我如何进入java.lang.ClassScala 2.8?

4

2 回答 2

6

尝试将返回类型注释为getType()as java.lang.Class。这里的问题是您在接口上使用了原始类型,而原始类型在 Scala 中确实不能很好地工作。

于 2010-04-17T13:12:26.327 回答
1

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

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

没关系。

但是,方法签名由子类更改。有趣的!

于 2010-04-17T15:41:12.137 回答