如何声明在Scala中抛出已检查异常的Java方法的覆盖?

时间:2014-07-16 00:59:29

标签: scala

我正在尝试覆盖以下Java方法:

@Override
public void processMeter(MetricName name, Metered meter, Long epoch)
        throws IOException {
    // implementation
}

此Scala声明无法编译:

@throws(classOf[IOException])
override def processMeter(name: MetricName, meter: Metered, epoch: Long) {
    // implementation
}

报告的错误是:

Error:(30, 18) method processMeter overrides nothing
    override def processMeter(name: MetricName, meter: Metered, epoch: Long) {
                 ^

我专门使用Scala 2.9.0.1。

1 个答案:

答案 0 :(得分:3)

编译器看到scala.Long而不是java.lang.Long,因此无法找到要覆盖的方法签名。试试这个:

@throws(classOf[IOException])
override def processMeter(name: MetricName, meter: Metered, epoch: java.lang.Long) {
    // implementation
}