首页 > 解决方案 > 如何检查 ClassType 是否继承自 JDI 中的 java.util.Collection?

问题描述

我可以获得 a 的所有接口,ClassType但这allInterfaces()会导致对调试对象的许多 JDWP 调用很慢。另一种方法是检查这一点:

Collection.class.isAssignableFrom(classType)

但是方法isAssignableFrom()java.lang.Class,所以我必须invokeMethod像这样调用这个方法:

javaLangClassReference.invokeMethod(threadRef, isAssignableFromMethod,
                        Arrays.asList(myClassType),
                        ObjectReference.INVOKE_SINGLE_THREADED);

但是这里有两个问题:

  1. classType不能用作方法调用的参数,它不是Value
  2. 如何将java.util.Collection作为参数提供给 Method (Arrays.asList(myClassType, ...))

另外,有没有更简单的方法来检查给定ClassType的是否是 a java.util.Collection

标签: javadebuggingjvmtijdi

解决方案


推荐阅读