在Kotlin扩展功能中反映“ this”的名称

时间:2018-11-23 05:54:13

标签: android reflection kotlin kotlin-extension kotlin-reflect

有没有办法在扩展功能中获取'this'的名称?

fun Boolean?.persist() {

   if (this == null) return   // Do Nothing

   val nameOfVariable:String = //get the name of the variable? 

   // Persist variable
   PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(nameOfVariable, this).apply()

}

2 个答案:

答案 0 :(得分:1)

我认为你不能那样做。作为解决方法,将名称作为参数传递:

fun Boolean?.persist(name: String) {
    // ...
     PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(name, this).apply()
}

答案 1 :(得分:1)

您无法做的事情。您必须提供nameOfVariable作为参数。扩展函数也可以在不由变量支持的任何值上调用。

Delegated Properties可以满足您的需求。