Kotlin 使参数能够接受多个类型作为输入,同时比使用;任何;

Kotlin 使参数能够接受多个类型作为输入,同时比使用;任何;,kotlin,Kotlin,我有一个方法,它接受值,该值必须是布尔型、浮点型、整型、长型、或字符串。有没有办法让这个方法只接受value的那些类型,而不是像我用when()语句那样接受Any并处理不正确的值 fun putValue(key: String, value: Any) { when (value) { is Boolean -> putBoolean(key, value) is Float -> putFloat(key, valu

我有一个方法,它接受
,该值必须是
布尔型
浮点型
整型
长型
、或
字符串
。有没有办法让这个方法只接受
value
的那些类型,而不是像我用
when()
语句那样接受
Any
并处理不正确的值

fun putValue(key: String, value: Any) {
        when (value) {
            is Boolean -> putBoolean(key, value)
            is Float -> putFloat(key, value)
            is Int -> putInt(key, value)
            is Long -> putLong(key, value)
            is String -> putString(key, value)
            null -> return
        }
    }

它们唯一的共同接口(在继承层次结构的最底层)是。因此,您可以使用上限限制
值的类型,如下所示:

fun <T: Comparable<T>> putValue(key: String, value: T?) {

    when (value) {
        is Boolean -> println("Boolean")
        is Float ->  println("Float")
        is Int -> println("Int")
        is Long -> println("Long")
        is String -> println("String")
        null -> return
    }
}
value(键:字符串,值:T?){
何时(值){
is Boolean->println(“Boolean”)
是Float->println(“Float”)
是Int->println(“Int”)
is Long->println(“Long”)
is String->println(“字符串”)
空->返回
}
}

它们唯一的共同界面(继承层次结构最底层)是。因此,您可以使用上限限制
值的类型,如下所示:

fun <T: Comparable<T>> putValue(key: String, value: T?) {

    when (value) {
        is Boolean -> println("Boolean")
        is Float ->  println("Float")
        is Int -> println("Int")
        is Long -> println("Long")
        is String -> println("String")
        null -> return
    }
}
value(键:字符串,值:T?){
何时(值){
is Boolean->println(“Boolean”)
是Float->println(“Float”)
是Int->println(“Int”)
is Long->println(“Long”)
is String->println(“字符串”)
空->返回
}
}

您可以重载函数,以便允许的类型在编译时可供编译器使用

步骤:

  • 删除当前的
    putValue
    功能
  • 将所有现有的特定于类型的函数从
    putXXX
    重命名为
    putValue
    (它们都将具有相同的名称,并且将在其参数类型上重载)

  • 您可以重载函数,以便允许的类型在编译时可供编译器使用

    步骤:

  • 删除当前的
    putValue
    功能
  • 将所有现有的特定于类型的函数从
    putXXX
    重命名为
    putValue
    (它们都将具有相同的名称,并且将在其参数类型上重载)