У меня есть метод без параметров, который я хочу перегрузить с помощью другого метода, использующего конструктор более высокого типа. Я также хочу использовать параметр конструктора типов в теле метода. Я также хочу захватить тег класса. Это то, что я думаю, что должно быть возможно:Тип Перегрузка конструктора с более высокими типами типов и доступ к параметру конструктора типов
trait SomeContainer[+A]
trait Foo[+A]
class SomeClass {
// The simple variant
def method[T <: AnyRef]: Foo[T]
// Now the overloaded higher-kinded variant
def method[F[T <: AnyRef : Manifest] <: SomeContainer[T]]: Foo[T] = {
val classTag = manifest[T]
// Do something with it
}
}
Однако у меня нет доступа к T
вообще здесь. Цель здесь заключается в том, чтобы метод более высокого порядка перегружал не высший сорт def method[T <: AnyRef]: Foo[T]
. Я достиг ограничения языка? Является ли подпись более высокого сорта метода слишком открытой, что делает невозможным компилятор, чтобы устранить эту проблему от другой? Есть ли более идиоматический подход к такого рода схемам перегрузки по параметрам типа?