如何使用Javap反汇编所有代码?

多汁的

我想用来查看Class文件的字节码javap -c,但是它似乎并没有破坏我的所有代码。这里是FooBar.java

class FooBar {
    public static void main(String[] args) {
        if (args[0].equals("foo")) {
            System.out.println("bar");
        } else {
            notFoo();
        }
    }

    private static void notFoo() {
        System.out.println("not Foo");
    }
}

与编译javac FooBar.java然后,我尝试使用以下javap -c FooBar.class输出来分解它

class FooBar {
  FooBar();
    Code:
       0: aload_0
       1: invokespecial #1                  // Method java/lang/Object."<init>":()V
       4: return

  public static void main(java.lang.String[]);
    Code:
       0: aload_0
       1: iconst_0
       2: aaload
       3: ldc           #2                  // String foo
       5: invokevirtual #3                  // Method java/lang/String.equals:(Ljava/lang/Object;)Z
       8: ifeq          22
      11: getstatic     #4                  // Field java/lang/System.out:Ljava/io/PrintStream;
      14: ldc           #5                  // String bar
      16: invokevirtual #6                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V
      19: goto          25
      22: invokestatic  #7                  // Method notFoo:()V
      25: return
}

如您所见,这似乎只是在反汇编main方法,而没有向我显示反汇编的notFoo()方法。

我如何拆卸一切?

路易斯·瓦瑟曼

javap 默认情况下仅显示公共方法。

传递-p参数以查看所有内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章