我想制作一个可以同时接受列表和可变列表的数据类,如果列表是MutableList的实例,则直接使其成为属性,如果它是List,则将其转换为MutableList,然后存储它。
data class SidebarCategory(val title: String, val groups: MutableList<SidebarGroup>) {
constructor(title: String, groups: List<SidebarGroup>) :
this(title, if (groups is MutableList<SidebarGroup>) groups else groups.toMutableList())
}
在上面的代码中,该类的辅助构造函数(第二行)抛出
Platform declaration clash: The following declarations have the same JVM signature
错误。我应该如何处理?我应该使用所谓的假构造函数(Companion.invoke())还是有更好的解决方法?
最佳答案
List
和MutableList
映射到相同的java.util.List
类(mapped-types),因此从JMV中看,SidebarCategory
具有两个相同的构造函数。
除了List
,您可以在第二个构造函数中使用Collection
。