【问题标题】:Is classOf[] in Scala 2.8 different from 2.7?Scala 2.8 中的 classOf[] 与 2.7 不同吗?
【发布时间】:2010-04-17 12:02:00
【问题描述】:

我有一个 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

【问题讨论】:

    标签: scala scala-2.8 java.lang.class


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      没关系。

      但是,方法签名被子类改变了。有趣!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-17
        • 2011-09-11
        • 2011-03-07
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多