Вы можете иметь общий метод, но реализация абстрактного универсального метода сам должен быть универсальным:
scala> trait T { def p[A,B]: Map[A,B] }
defined trait T
scala> new T { def p[S, T] = Map[S, T]() }
res13: java.lang.Object with T = [email protected]
Помните, что параметры неограниченного типа универсально оцениваются. Вы говорите, что p определяется для всех пар типов без исключения или ограничения. Многие привязки S и T несовместимы с Int, поэтому вы не можете просто вернуть Map [Int, Int], где требуется Карта [S, T].
Обновление: Re: «Итак, у меня могут быть не общие реализации общих абстрактных классов и черт, а не общих методов?»
Вы можете иметь необщего реализацию общих абстрактных классов в этом смысле:
abstract class C[A, B, C] { /* ... */ }
class D extends C[Int, String, Boolean] { /* ... */ }
Или как это:
class E extends C { /* ... */ }
Хотя это одна та же, как:
class E extends C[Nothing, Nothing, Nothing] { /* ... */ }
И Nothing
- это необитаемый тип в Scala.
Но вы не можете реализовать абстрактный общий метод с помощью не общего метода
Итак, у меня могут быть не общие реализации общих абстрактных классов и признаков, но не общих методов? –