如何将子类型列表转换为父类型列表

时间:2018-11-06 18:43:39

标签: generics collections kotlin

我想有一种很不错的方法,但是我看不到它。 假设我有class Bull: Dog类。如果我有Set<Bull> bulls和一个函数fun doSomeCool(vararg input:Dog),该如何处理bulls以便将其传递给doSomeCool?例如,以下操作无效:

doSomeCool(*bulls.toTypedArray())

更新

很抱歉,我向后提出了这个问题。轻微但重要的变化:

我上过课:

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贬低-因为除了自动生成的主键外,它们实际上是相同的类型,顺便说一句,它不用于等号(我什至不覆盖等号) ,Bull使用Dog的实现)。有没有一种简便的方法,而不必在狗中创建每个元素的新闻实例?

0 个答案:

没有答案