WeakReference 上的扩展方法

Extension method on WeakReference

我想创建仅当引用不为空时才执行方法的扩展方法:

fun WeakReference<T>.safe( body : T.() -> Unit) {
    this.get()?.body()
}

用法示例:

mTimerView.safe({startTimer(time)}) 
// OR
mTimerView.safe { startTimer(time) }

而不是:

mTimerView.get()?.stopTimer()

我做错了什么因为我得到:"Unresolved reference: T" ?

或者也许有更简单的方法,无需扩展方法?

我找到了答案:

fun <T> WeakReference<T>.safe( body : T.() -> Unit) {
    this.get()?.body()
}