我显然遗漏了以下内容无法编译的原因:
trait SomeTrait{
def homepageClass[A <: SomeType]: Class[A]
}
class SomeOtherType extends SomeType
object SomeObject extends SomeTrait{
def homepageClass = classOf[SomeOtherType]
}
最佳答案
这里的问题是以下两个声明是不同的:
def homepageClass[A <: SomeType]: Class[A] // has type parameters
def homepageClass = classOf[SomeOtherType] // doesn't have type parameters
要完成您想要的,您需要声明一个抽象类型,如下所示:
trait SomeTrait{
type A <: SomeType
def homepageClass: Class[A]
}
object SomeObject extends SomeTrait {
type A = SomeOtherType
def homepageClass: Class[A] = classOf[SomeOtherType]
}
或者
trait SomeTrait[A <: SomeType] {
def homepageClass: Class[A]
}
object SomeObject extends SomeTrait[SomeOtherType] {
def homepageClass: Class[SomeOtherType] = classOf[SomeOtherType]
}
关于scala - 声明 "Class<? extends SomeType>"的 Scala 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086093/