【问题标题】:Kotlin generic class overload?Kotlin 泛型类重载?
【发布时间】:2018-09-12 08:43:01
【问题描述】:

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

例如一个元组类:

class Tuple<T1>{
    //blah 
}
class Tuple<T1,T2>{
    //blah blah 
}
class Tuple<T1,T2,T3>{
    //blah blah blah
}

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

【问题讨论】:

  • 你不能重载类。你必须给它们起不同的名字。

标签: generics kotlin overloading variadic


【解决方案1】:

您不能这样做,因为 Kotlin 类必须具有唯一的完全限定名称(即它的包名加上简单名称 Tuple)。

根据您的喜好,您可以按照TupleN 模式(Tuple1Tuple2 等)命名这些类,并创建一个公共接口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)

/* ... */

遇到类似问题,我个人求助generatingTupleN classes

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    相关资源
    最近更新 更多