Я пытаюсь переопределить мой параметризованный метод в scala,
У меня есть абстрактный класс, подобный этому:
abstract class Ranking[G <: AbstractGenome, MG <: MultiGoalLike] {
def operate(individuals :IndexedSeq [IndividualMG[G,MG]]):IndexedSeq [IndividualMG[G,MG]
}
Я хочу два типа ранжирования, для которых требуется оформленная версия IndividualMG
: IndividualMG[G,MG] with IDistance
и IndividualMG[G,MG] with IRank
.
Моя IndividualMG
подпись класса:
class IndividualMG[G <: AbstractGenome,MG <: MultiGoalLike] (val genome: G,val multiGoal:MG)
Мои два класса для ранжирования:
class Ranking1 [G <: AbstractGenome, MG <: MultiGoalLike] extends Ranking[G,MG] {
override def operate(individuals :IndexedSeq [IndividualMG [G,MG] with IRanking])
:IndexedSeq [IndividualMG [G,MG] with IRanking]= {
return ...
}
class Ranking2 [G <: AbstractGenome, MG <: MultiGoalLike] extends Ranking[G,MG] {
override def operate(individuals :IndexedSeq [IndividualMG [G,MG] with IDistance])
:IndexedSeq [IndividualMG [G,MG] with IDistance] = {
return ...
}
У меня естьошибка, это логика, потому что тип отличается, когда я пытаюсь переопределить, но как я могу сделать, чтобы проверить тип наследования [I <: IndividualMG [G,MG]]
для моих двух операторов ранжирования в классе Ranking1
и Ranking2
?
Спасибо стек, SR.