2016-07-21 4 views
1

Я пытаюсь создать массив кусков подклассов в scala, проблема заключается в том, что суперкласс - это ограниченный лимит, т. Е. (Видимо, для размещения ломбока, так что это не то, что я могу изменить)Scala seq из ограниченных Java-генераторов

abstract public SomeClass<T extends SomeClass>{} 

И в Scala

val subClasses:Seq[_ <: SomeClass] = seq(sub1, sub2, ..., subN) 

Я получаю ошибку "SomeClass принимает параметры типа", казалось бы указать, что я должен был бы

Seq[_ <: SomeClass[_ <: SomeClass[_ <: SomeClass ... 

После довольно многого googleing я все еще не нашел приятного решения, и на данный момент я не знаю, что искать. Буду признателен за любую оказанную помощь.

+0

Не могли бы вы вставить минимальный пример одного из подклассов? Мне очень интересно видеть, как это может быть конкретно создано ... Я думаю, что ответ на этот вопрос может быть связан с 'forSome'. – Alec

ответ

1

Самоназывающий тип упоминается как F-bounded polymorphism в scala. Для того, чтобы создать Seq вы описываете в вашем примере тип будет:

Seq[SomeClass[_ >: subN with sub2 with sub1 <: SomeClass[_ >: subN with sub2 with sub1 <: Object]]] 

Обратите внимание, что этот тип является специфичным для списка элементов в нем, вы можете создать тип, который включает в себя все подтипы SomeClass но это стало бы болезненным.

Смежные вопросы