Java 格式化TraceClassVisitor的输出

Java 格式化TraceClassVisitor的输出,java,bytecode,java-bytecode-asm,Java,Bytecode,Java Bytecode Asm,假设我想用asm库漂亮地打印一个方法的字节码 public int get777() { return 777; } 通过TraceClassVisitor将显示为 // access flags 0x1 public get777()I L0 LINENUMBER 21 L0 SIPUSH 777 IRETURN L1 LOCALVARIABLE this Lsomething/Point; L0 L1 0 MAXSTACK = 1

假设我想用asm库漂亮地打印一个方法的字节码

public int get777() { return 777; }
通过
TraceClassVisitor
将显示为

  // access flags 0x1
  public get777()I
   L0
    LINENUMBER 21 L0
    SIPUSH 777
    IRETURN
   L1
    LOCALVARIABLE this Lsomething/Point; L0 L1 0
    MAXSTACK = 1
    MAXLOCALS = 1
}
现在,问题是我只关心

    SIPUSH 777
    IRETURN
因为其他的一切都与我无关,所以我想把它们消灭掉

我曾想过通过继承
TraceMethodVisitor
来过滤我不想要的东西,但事实证明它是最后一个类(糟糕!)


是否有任何方法可以格式化
TraceClassVisitor
的输出?如果不是,你认为最好的方法是过滤掉我不关心的东西吗?

< P>我的标准方法是:获取源代码,查找“NexRead <代码>最终类< /代码> ->代码>类< /代码>,重新编译。< /P> < P>可以通过将CaseRealth.SkpIdEdg标记传递给CyraseRead。()方法


另一种方法是在TraceClassVisitor和TraceMethodVisitor之前添加一个visitor,该visitor和TraceMethodVisitor将吞下您不希望在输出中看到的事件。

我将考虑提供我自己的(可能扩展或委托给)通过构造函数。我还没有测试过这种方法。

在没有最终版本的情况下编译它,从中创建一个新的JAR。或者重命名该类并将其添加到您的项目中。ClassReader.SKIP\u调试似乎很好!我想知道为什么EmptyVisitor似乎在ASM 4.0中消失了?