Я думаю, что есть хороший способ сделать это, но я просто не вижу этого.
Скажем, у меня есть класс 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). Есть ли простой способ сделать это без создания экземпляра новостей каждого элемента на собаках?