0

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

fun <E> myFun() = ...

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

4

1 回答 1

0

我非常怀疑这是可能的。

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

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

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

因此,虽然我不能肯定地说,但似乎不太可能。

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

于 2020-06-22T23:56:22.973 回答