使用Scala中的重载vargs方法覆盖Java接口

时间:2012-11-14 23:22:28

标签: java scala

有没有办法在Scala中实现以下Java接口?

public interface Request {
    void acceptLanguage(Locale... locales);
    void acceptLanguage(String... locales);
}

我试过了:

override def acceptLanguage(locales: Locale*) : Unit =
override def acceptLanguage(locales: String*) : Unit =

但这给了我:

error: double definition:
have same type after erasure

我试过这个:

override def acceptLanguage(locales: Locale*) (implicit Manifest[Locale]) : Unit = {}
override def acceptLanguage(locales: String*) (implicit Manifest[String]): Unit = {}

但是这会产生不同的签名,因此覆盖失败

我使用的是版本2.9.2。

1 个答案:

答案 0 :(得分:8)

使用@varargs注释:

override def acceptLanguage(@varargs locales: Locale*) : Unit =
override def acceptLanguage(@varargs locales: String*) : Unit =