假设我有一个函数(在 Kotlin over Java 中):
fun <E> myFun() = ...
其中 E 是我一无所知的一般类型。我可以在这个函数中确定是否存在扩展函数E.extFun()
吗?如果是这样,怎么办?
假设我有一个函数(在 Kotlin over Java 中):
fun <E> myFun() = ...
其中 E 是我一无所知的一般类型。我可以在这个函数中确定是否存在扩展函数E.extFun()
吗?如果是这样,怎么办?
我非常怀疑这是可能的。
请注意,扩展函数是在编译时静态解析的。
并且它们依赖于范围内的扩展功能,通常通过相关的import
. 特别是,同一个类可以有多个同名的扩展函数,只要它们定义在不同的地方;范围内的那个将被调用。
在您的函数中,您将无权访问任何该上下文。因此,即使您使用反射(这是针对此类问题的常见且被滥用的“越狱卡”),您仍然无法找到相关的扩展功能。(除非你事先知道它们可能在哪里定义——但在这种情况下,你可能可以利用这些知识提出更好的方法。)
因此,虽然我不能肯定地说,但似乎不太可能。
为什么要确定这个?你想通过它达到什么目的?