我有一个用Java定义的方法,如:
void foo(int x, Thing... things)
我需要在Scala中覆盖它,但这两个都会产生错误:
override def foo(x: Int, things: Thing*)
override def foo(x: Int, things: Array[Thing])
错误是指<repeated...>
,但我不知道那是什么。
更新
Ugg ......没关系。我在2.10.0,我输入错误的东西,没有方法体。然后我对这个错误信息感到困惑,这对我来说似乎仍然很奇怪。在SBT:
> compile
[info] Compiling 1 Scala source to [...]/target/scala-2.10/classes...
[error] [...]/src/main/scala/Translator.scala:41: class MyMethodVisitor needs to be abstract, since method visitTableSwitchInsn is not defined
[error] (Note that org.objectweb.asm.Label* does not match <repeated...>[org.objectweb.asm.Label])
[error] class MyMethodVisitor extends MethodVisitor (Opcodes.ASM4) {
[error] ^
问题是我的visitTableSwitchInsn
只是缺少一个正文,但错误表明问题是varargs参数的类型。
答案 0 :(得分:1)
爪哇:
package rrs.scribble;
public
class VA1
{
public int va1(int... ints) {
return ints.length;
}
}
Scala的:
package rrs.scribble
class VA1S
extends VA1
{
override
def va1(ints: Int*): Int =
ints.length * 2
}
SBT:
> ~compile
[info] Compiling 1 Scala source and 1 Java source to …/scribble/target/scala-2.10/classes...
[success] Total time: 4 s, completed Jan 15, 2013 3:48:14 PM
1. Waiting for source changes... (press enter to interrupt)
这是Scala 2.10,与@ TravisBrown的评论一致。