gpt4 book ai didi

java - JDI/JPDA 事件过滤

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:14 25 4
gpt4 key购买 nike

在JDI中,有一个API可以从JPDA使用的JVM中处理的事件中排除事件。这是使用以下方法完成的:

  1. addExclusionFilter(String)排除某些模式;例如addExclusionFilter("java.*")
  2. addClassFilter(String)包括一些模式;例如addClassFilter("java.util.*")

现在,我两者都需要。我需要排除来自 "java.*" 的所有事件,但我需要接收来自 "java.util.Iterator" 的事件。

另外,请注意,例如java.util.Iterator是由java.util.AbstractList中的某些私有(private)类实现的接口(interface)。我们如何将此类事件接收到java.util.Iterator

当我使用这两种方法时,我实际上不再接收事件。你知道该怎么做吗?提前致谢。

最佳答案

您可以使用 addClassFilter 方法,该方法将 ReferenceType 作为参数,该方法(与 String-arg 版本不同)匹配给定类型的任何子类型。与jdiscript和 Java 8,触发 Iterator 方法调用可能类似于:

public static void main(String[] args) {
JDIScript j = new JDIScript(new VMLauncher(OPTIONS, MAIN).start());

OnVMStart start = se -> {
List<ReferenceType> rts = j.vm().classesByName("java.util.Iterator");
j.methodEntryRequest(me -> {
println("Your handler here");
}).addClassFilter(rts.get(0))
.enable();
};

j.run(start);
}

关于java - JDI/JPDA 事件过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com