Kotlin:如何确定扩展功能是否存在

Kotlin: How can I determine the extension function exists

假设我有一个函数(在 Kotlin 中 Java):

fun <E> myFun() = ...

其中E是我一无所知的一般类型。我可以在这个函数中判断是否存在扩展函数E.extFun()吗?如果是,怎么做?

我很怀疑这是可能的。

请注意,扩展函数是在编译时静态解析的。

并且它们依赖于范围内的扩展函数,通常通过相关 import。特别是,对于同一个class,可以有多个同名的扩展函数,只要它们定义在不同的地方;范围内的那个将被调用。

在您的函数中,您无权访问任何上下文。因此,即使您使用反射(这是一种常见的、被滥用的、针对此类问题的“免狱卡”),您仍然无法找到相关的扩展函数。 (除非您事先了解它们的定义位置——但在这种情况下,您可能可以利用这些知识提出更好的方法。)

所以虽然我不能肯定地说,但似乎极不可能。

为什么要确定这个?你想通过它达到什么目的?