我正在寻找一种自动检测Swing单线程策略在我的代码中违规的方法。我希望有一些类似于AOP代码的东西,可以在swing应用程序运行时将其投入到VM中,并记录任何在EDT之外修改swing组件的地方。
虽然我不是AOP专家,但我想象创建一个环绕每个java.swing.*类的AOP代理可能会像这样:
AOP_before(Method m, Object args[]) {
if (!isEventDispatchThread(Thread.currentThread()) {
logStack(new RuntimeException("violation!"));
}
invoke(m, args);
}
有没有人知道一个能做到这一点的项目或工具?