我能知道何时从Java或Kotlin调用我的库吗?

我能知道何时从Java或Kotlin调用我的库吗?,java,android,kotlin,kotlin-interop,kotlin-java-interop,Java,Android,Kotlin,Kotlin Interop,Kotlin Java Interop,我正在为Android开发一个Kotlin库。 我想为Kotlin和Java开发人员提供一个很好的开发体验,但是因为我没有无限的资源,所以我需要在这两者之间划分优先级 该库正在与我控制的服务器交互,因此我可以向网络调用添加元数据,以帮助我了解用户的划分。 但是有没有一种方法可以让我知道什么时候从Java和Kotlin调用我的库? 我看到可能有一种方法可以检查给定的类,但是作为库的所有者,我认为如果不使用反射(这会增加一些运行时成本),我无法知道哪个类正在调用我自己的类。是否有一种方法可以在运行时

我正在为Android开发一个Kotlin库。 我想为Kotlin和Java开发人员提供一个很好的开发体验,但是因为我没有无限的资源,所以我需要在这两者之间划分优先级

该库正在与我控制的服务器交互,因此我可以向网络调用添加元数据,以帮助我了解用户的划分。
但是有没有一种方法可以让我知道什么时候从Java和Kotlin调用我的库?

我看到可能有一种方法可以检查给定的类,但是作为库的所有者,我认为如果不使用反射(这会增加一些运行时成本),我无法知道哪个类正在调用我自己的类。是否有一种方法可以在运行时从JVM获取元数据,这将表明代码是否是从Kotlin编译的(即使是以误判为代价,例如检查是否在任何时候使用了
KAPT
,这至少会报告一些Kotlin用户?

简短回答:否


当您的代码运行时,在这两种情况下,它都是用Java bytcode编译的。

一般来说,在Java和Kotlin都使用的JVM上,您无法真正检测到调用您的方法的人。@anber:谢谢,但这是关于检查给定类是否在Kotlin中;我认为让我的库在每个调用方上触发反射调用不是一个好方法。我在JVM上下文中找不到任何元数据吗?我相信您可以尝试执行
Class.forName(“kotlin.metadata”)如果它比它的Kotlin工作,如果它因
ClassNotFoundException
而失败,则比它的Java