You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中使用泛型类委托函数变量的问题求助

Kotlin中使用泛型类委托函数变量的问题求助

大家好,我最近在开发一个需要委托函数变量的应用,过程中遇到了卡壳的问题,折腾半天没理清头绪,想请教下各位大佬。先给大家贴一个最小可复现的代码示例:

package org.prismsus.tank

import kotlin.reflect.KProperty

fun addFunc(a : Int, b : Int) : Int {
    return a + b
}

class Test{
    inner class PrintFuncCall1{
        operator fun getValue(thisRef: Any?, property: KProperty<*>): (Int, Int) -> Int {
            fun temp(a : Int, b : Int) : Int {
                println("Function ${property.name}")
                return addFunc(a, b)
            }
            return ::temp
        }
    }
    val delegatedFun1 : (Int, Int) -> Int by PrintFuncCall1()


    inner class PrintFuncCall2<F : (Array<out Any>) -> R, R>{
        operator fun getValue(thisRef : Any?, property : KProperty<*>) : (Array<out Any>) -> R{
            fun temp(vararg params : Any) : R{
                // 这里不知道怎么正确实现逻辑,想达到和PrintFuncCall1类似的效果
            }
            return ::temp
        }
    }
    // 这里也不确定怎么正确声明委托的函数变量
}

我已经用非泛型的PrintFuncCall1实现了简单的函数委托,能打印被委托函数的名字并调用目标函数addFunc。但当我想做一个通用的泛型类PrintFuncCall2,来适配不同参数和返回值类型的函数时就懵了——不知道怎么在temp函数里正确处理参数、调用目标函数,也不确定对应的委托变量该怎么声明。有没有大佬能指点下这个泛型委托的正确实现方式呀?

备注:内容来源于stack exchange,提问作者ttzytt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:48:12