【发布时间】:2014-09-16 17:20:02
【问题描述】:
可能重复:
How do I disambiguate in Scala between methods with vararg and without
我目前正在将应用程序的一部分移植到 scala,它使用 Oval 库。该方法的问题是 Validator.validate 方法。它有twosignatures:
List<ConstraintViolation> validate(Object validatedObject)
List<ConstraintViolation> validate(Object validatedObject, String... profiles)
scala 代码大致如下所示:
def validate(toValidate: AnyRef) = {
val validator = createValidator
validator.validate(toValidate)
}
以及错误信息:
error: ambiguous reference to overloaded definition,
[INFO] both method validate in class Validator of type (x$1: Any,x$2: <repeated...>[java.lang.String])java.util.List[net.sf.oval.ConstraintViolation]
[INFO] and method validate in class Validator of type (x$1: Any)java.util.List[net.sf.oval.ConstraintViolation]
[INFO] match argument types (AnyRef)
[INFO] this.validator.validate(toValidate)
我怎样才能让它明确?
【问题讨论】:
-
这似乎是对堆栈溢出的重载定义问题的模棱两可的引用。我应该删除这个帖子吗?尽管 Rex Kerr 确实给出了原作中没有的答案。
-
我在那里重新创建了我的答案,并以两种方式对其进行了扩展:一种是我为方法编写的简短形式,另一种适用于构造函数。