Рассмотрим следующий код Scala:
abstract class A
abstract class B[T <: A]
class ConcreteA extends A
class ConcreteB extends B[ConcreteA]
class Example[U <: B[T], T <: A]( resolver: U )
object Test {
new Example( new ConcreteB )
}
Последняя строка new Example( new ConcreteB )
не скомпилируется со следующей ошибкой:
error: аргументы inferred type [ConcreteB, Nothing] не соответствуют классу. Ограничения параметра типа типа [U <: B [T], T <: A]
Но ConcreteB
имеет все необходимые данные для разрешения как U, так и T. Что мне здесь не хватает?