Как преобразовать список дочернего типа в список родительского типа - PullRequest
0 голосов
/ 06 ноября 2018

Я думаю, что есть хороший способ сделать это, но я просто не вижу этого. Скажем, у меня есть класс class Bull: Dog. Если у меня есть Set<Bull> bulls и функция fun doSomeCool(vararg input:Dog), что мне делать с bulls, чтобы я мог передать его doSomeCool? Например, следующее не работает:

doSomeCool(*bulls.toTypedArray())

UPDATE

Мне очень жаль, что я задал вопрос задом наперед. Небольшие, но важные изменения:

У меня есть классы:

class Dog(val name:String)//there are actually more properties

class Bull(name:String):Dog(name){  
  @PrimaryKey(autoGenerate = true)
  var id: Int = 0//not used in equals function
}

Тогда у меня есть набор

val dogs:HashSet<Dog>=...

тогда мне нужно передать собак следующему методу

fun insert(vararg bull:Bull){...}//insert into a DB of Bulls

Так что на самом деле мне нужно каким-то волшебным образом уменьшить рейтинг от Dog до Bull - поскольку они действительно одного типа, за исключением автоматически сгенерированного первичного ключа, который, кстати, не используется в равных (я даже не переопределяю равные Булл использует реализацию Dog). Есть ли простой способ сделать это без создания экземпляра новостей каждого элемента на собаках?

...