Тип подстановочного знака Java
? extends File
соответствует экзистенциальному типу
_ <: File
в Scala.Попробуйте изменить сигнатуру
def calculate(component: MyComponent[File]): Unit = ???
на
def calculate(component: MyComponent[_ <: File]): Unit = ???
Также обратите внимание, что если MyComponent
был классом Scala, который находится под вашим контролем, то изменив параметр инвариантного типа на ковариантный типпараметр +F
также может работать, потому что тогда каждый MyComponent[F] forSome { type F <: File }
будет частным случаем MyComponent[File]
.