Kotlin泛型类重载?

3
我希望创建一些具有可变类型参数的类。例如,一个元组类:
class Tuple<T1>{
    //blah 
}
class Tuple<T1,T2>{
    //blah blah 
}
class Tuple<T1,T2,T3>{
    //blah blah blah
}

但它显示“重新声明”错误,有什么建议吗?

你不能重载类。你必须给它们不同的名称。 - marstran
1个回答

5
您不能这样做,因为Kotlin类必须具有唯一的完全限定名称(即其包名加上简单名称Tuple)。
根据您的喜好,您可以按照TupleN模式(Tuple1、Tuple2等)命名这些类,并创建一个通用接口Tuple以及一组共享名称tuple(...)的工厂函数,可以使用不同数量的参数创建不同程度的元组。
fun <T1> tuple(t1: T1) = Tuple1(t1)

fun <T1, T2> tuple(t1: T1, t2: T2) = Tuple2(t1, t2)

fun <T1, T2, T3> tuple(t1: T1, t2: T2, t3: T3) = Tuple3(t1, t2, t3)

/* ... */

我曾经遇到过类似的问题,个人选择生成我所需的TupleN


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接