Java Javassist 中的 instanceOf 模拟

Java instanceOf analogue in Javassist

我正在 android 项目中为 Gradle 开发一个插件。我使用 Transformation Api 来跨编译操作字节码,为此我选择了 Javassist。我的问题与这个图书馆有关。在操作字节码之前,我需要确定哪种类型有这个 class。例如,如果某些 ctClass 有方法 setOnClickListener(),我想知道它的类型(由 CtClass 表示的 class 的类型)。可能是 ctClass.instanceOf(android.view.View)ctClass.instanceOf(android.view.ViewGroup)。我找到了方法 .toClass() 但它抛出 InvocationTargetException 我认为它对我做了不必要的工作

CtClass 对象通常使用 ClassPool.get("classname") 获得,表示您选择的 class 的 class 文件通过“class名称”。它基本上表示对象本身,而不是该对象的实例。

因此它不是实例化对象,找出它是哪个“实例”没有意义。

然而,如果您需要有关 class 层次结构的信息,您可以使用 CtClass 公开的许多方法。这里只是几个例子: