Я хочу переопределить тип-параметризованный метод, присвоив конкретный тип параметру типа, что-то вроде кода ниже.Могу ли я переопределить тип парметеризованного метода с конкретным типом в scala?
trait A {
def amethod[T](x: T): T
}
trait B extends A {
def amethod(x: String): String = x ++ x
}
Однако компилятор дает amethod overrides nothing
. Я не могу поставить [String]
после amethod
в черте B, поскольку синтаксически это означает параметр типа String, а не тип java.lang.String. Мне интересно, как и как я могу сделать что-то подобное.
Большое спасибо.
У вас есть контроль над признаком 'A'? Если это так, вы можете заставить его использовать 'T' как параметр типа и сделать' B' подтипом 'A [String]'. – Jubobs
№ 'B' нарушает договор с' A'. –
это отлично работает для меня .. можете ли вы объяснить, в чем проблема? 'trait A {def amethod [T] (x: T): T}; trait B extends A {def amethod [String] (x: String) = x}; класс C расширяет B {}; val c = новый C(); c.amethod ("Hello"); res5: String = Hello' –