gpt4 book ai didi

scala - 我可以在 Scala 中使用具体类型覆盖类型参数化方法吗?

转载 作者:行者123 更新时间:2023-12-05 00:16:21 25 4
gpt4 key购买 nike

我想通过将具体类型分配给类型参数来覆盖类型参数化方法,类似于下面的代码。

trait A {
def amethod[T](x: T): T
}
trait B extends A {
def amethod(x: String): String = x ++ x
}

但是编译器给出了 amethod overrides nothing .我放不下 [String]之后 amethod在 trait B 中,在语法上它意味着一个名为 String 的类型参数,而不是 java.lang.String 类型。我想知道我是否以及如何做这样的事情。

非常感谢。

最佳答案

amethod ,正如它在 trait A 中定义的那样, 是一个泛型方法,这意味着每个调用都可以应用于泛型参数。

你想说的特质 B是改变表达一般性的范围,将其从调用点移动到类定义本身。这是不可能的。

正如评论中所建议的那样,如果您想在类定义中表达一般性,则类型参数应应用于类,而不是应用于方法:

 trait A[T] {
def amethod(x: T): T
}

trait B extends A[String] {
override def amethod(x: String): String = x ++ x
}

关于scala - 我可以在 Scala 中使用具体类型覆盖类型参数化方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42034401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com