Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics Kotlin泛型类重载?_Generics_Kotlin_Overloading_Variadic - Fatal编程技术网

Generics Kotlin泛型类重载?

Generics Kotlin泛型类重载?,generics,kotlin,overloading,variadic,Generics,Kotlin,Overloading,Variadic,我想创建一些类型参数数目可变的类 例如,元组类: class Tuple<T1>{ //blah } class Tuple<T1,T2>{ //blah blah } class Tuple<T1,T2,T3>{ //blah blah blah } 类元组{ //废话 } 类元组{ //废话 } 类元组{ //废话废话 } 但是它显示了“重新声明”错误,有什么建议吗?您不能这样做,因为Kotlin类必须具有唯一的完全限定名(

我想创建一些类型参数数目可变的类

例如,元组类:

class Tuple<T1>{
    //blah 
}
class Tuple<T1,T2>{
    //blah blah 
}
class Tuple<T1,T2,T3>{
    //blah blah blah
}
类元组{
//废话
}
类元组{
//废话
}
类元组{
//废话废话
}

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

您不能这样做,因为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)

/* ... */
fun元组(t1:t1)=Tuple1(t1)
有趣的元组(t1:t1,t2:t2)=元组2(t1,t2)
有趣的元组(t1:t1,t2:t2,t3:t3)=元组3(t1,t2,t3)
/* ... */

面对类似的问题,我个人求助于我需要的方法。

你不能让类过载。你必须给他们起不同的名字。