我想出了如何使用 aTypeTag
将空参数列表添加到现有方法并绕过擦除错误。我想了解我的 hack 是如何工作的,以及是否有更好的方法来实现预期的结果。
我有以下happyStuff
方法:
object Happy {
def happyStuff(s: String): String = {
"happy " + s
}
}
我想更改方法签名happyStuff
并弃用旧方法,如下所示。
object Happy {
@deprecated("this is the old one")
def happyStuff(s: String): String = {
"happy " + s
}
def happyStuff()(s: String): String = {
"happy " + s
}
}
此代码给出以下错误消息:“def happyStuff(s: String): String at line 6 and def happyStuff()(s: String): String at line 10 have the same type after erasure”。
这个 hack 让我得到了我想要的结果:
object Happy {
@deprecated("this is the old one")
def happyStuff(s: String): String = {
"happy " + s
}
def happyStuff[T: TypeTag](x: T)(s: String): String = {
"happy " + s
}
}
如何TypeTag
解决擦除消息?有没有更好的方法来达到预期的结果?