kotlin 使用hashmap来映射方法和参数,实现高级解耦

import com.google.gson.Gson
import com.google.gson.JsonSyntaxException

data class TestDataClass1(val name: String, val age: Int)
data class TestDataClass2(val id: Int, val email: String)

val gson = Gson()

inline fun <reified T> parseJson(data: String): T? {
    return try {
        gson.fromJson(data, T::class.java)
    } catch (e: JsonSyntaxException) {
        println("Invalid JSON format: $data")
        null
    }
}

fun method1(data: String) {
    val input: TestDataClass1? = parseJson(data)
    if (input != null) {
        println(input::class.java)
        println("Method 1 called with data: $input")
    }
}

fun method2(data: String) {
    val input: TestDataClass2? = parseJson(data)
    if (input != null) {
        println("Method 2 called with data: $input")
    }
}

/**
val dataClassMap = hashMapOf<String, Class<*>>(
    ::method1.name to TestDataClass1::class.java,
    ::method2.name to TestDataClass2::class.java
)
*/

fun main() {
    val map = hashMapOf<String, (String) -> Unit>(
        "k1" to ::method1,
        "k2" to ::method2
    )

    val key = "k1"
    val jsonString = "{\"name\":\"John\", \"age\":30}"

    val method = map[key]

    if (method != null) {
        method.invoke(jsonString)
    } else {
        println("Method not found for key: $key")
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值