Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Kotlin中导入类型扩展函数_Kotlin_Kotlin Extension - Fatal编程技术网

如何在Kotlin中导入类型扩展函数

如何在Kotlin中导入类型扩展函数,kotlin,kotlin-extension,Kotlin,Kotlin Extension,我为Any类型编写了一个扩展函数,该函数将按名称检索对象属性值。我希望能够在我的项目中的任何地方使用它。这是我的扩展函数: package com.example.core.utils.validation import java.util.NoSuchElementException import kotlin.reflect.full.memberProperties fun Any.getFieldValue(fieldName: String): Any? { try {

我为
Any
类型编写了一个扩展函数,该函数将按名称检索对象属性值。我希望能够在我的项目中的任何地方使用它。这是我的扩展函数:

package com.example.core.utils.validation

import java.util.NoSuchElementException
import kotlin.reflect.full.memberProperties

fun Any.getFieldValue(fieldName: String): Any? {
    try {
        return this.javaClass.kotlin.memberProperties.first { it.name == fieldName }.get(this)
    } catch (e: NoSuchElementException) {
        throw NoSuchFieldException(fieldName)
    }
}
现在我想这样使用它

package com.example.core

import com.example.core.utils.validation.*

class App {
    val obj = object {
        val field = "value"
    }

    val fieldValue = obj.getFieldValue("field")
}
但存在未解决的引用错误


如何使扩展函数全局化并将其导入到任何地方?

您应该在第二个代码段中使用import语句,而不是第二个声明

见文件:


实际上,我不确定对任何类型进行扩展是否有效。我认为在这种情况下,您需要在类型为Any的对象上调用它。

您应该在第二个代码段中使用import语句,而不是第二个声明

见文件:


实际上,我不确定对任何类型进行扩展是否有效。我认为在这种情况下,您需要对类型为Any的对象调用它。

很抱歉,这是帖子中的错误,而不是我的代码中的错误。谢谢“事实上,我不确定对任何类型进行扩展是否有效。”是的,是的。例如
import-okhttp3.MediaType.Companion.toMediaType
很抱歉,这是帖子中的错误,不是我的代码中的错误。谢谢“事实上,我不确定对任何类型进行扩展是否有效。”是的,它是有效的。例如,
import-okhttp3.MediaType.Companion.toMediaType
对我来说应该是有效的。。。都在同一个项目中?看起来对我来说应该有用。。。两者都在一个项目中吗?