是否可以使用@SuppressWarnings(???)
来抑制此特定警告? (我不打算将此转换用作视图绑定,因此警告无效。)
答案 0 :(得分:6)
不幸的是没有。编译器忽略@SuppressWarnings
。另请参阅this question。
答案 1 :(得分:1)
虽然您无法通过@SuppressWarnings
禁止此警告,但您可以简单地重命名编译器发出警告的重载之一。如果您不想重命名它,因为它也被明确地调用,请使该方法非隐式,并添加另一个(命名不同的)隐式转换,转换为前者。
换句话说,你应该通过例子来解决这个问题:
class MyClass
object MyClass {
implicit def myConv: MyClass = error("TODO")
implicit def myConv[X](value: X): MyClass = error("TODO")
}
进入这个:
class MyClass
object MyClass {
implicit def myConv: MyClass = error("TODO")
def myConv[X](value: X): MyClass = error("TODO") // made it non implicit
implicit def myConv2[X](value: X): MyClass = myConv( value ) // renamed so that it is not an overload anymore
}
请注意,警告仅在scala 2.9.x中发出,默认情况下不再在scala 2.10中发出(但警告所讨论的实际问题仍然存在 - 警告消息仅被删除,因为它是因类型等级使用量激增而被视为过于嘈杂。)