了解javap工具

javap命令反汇编一个类文件。 javap命令显示有关类文件中存在的字段, 构造函数和方法的信息。
使用Javap工具的语法让我们看看如何使用javap工具或命令。

javap fully_class_name

使用Javap工具的示例
javap java.lang.Object

输出:
Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); public final native java.lang.Class< ?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait(long) throws java.lang.InterruptedException; public final void wait(long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; protected void finalize() throws java.lang.Throwable; static {}; }

在类中使用javap工具的另一个示例让我们对java文件使用javap命令。
class Simple{ public static void main(String args[]){ System.out.println("hello java"); } }

现在, 让我们使用javap工具来反汇编类文件。
javap Simple

输出:
Compiled from ".java" class Simple { Simple(); public static void main(java.lang.String[]); }

javap -c命令你可以使用javap -c命令查看反汇编的代码。反映Java字节码的代码。
javap -c Simple

输出:
Compiled from ".java" class Simple { Simple(); Code: 0: aload_0 1: invokespecial #1// Method java/lang/Object."< init> ":()V 4: returnpublic static void main(java.lang.String[]); Code: 0: getstatic#2// Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc#3// String hello java 5: invokevirtual #4// Method java/io/PrintStream.println:(Ljava/lang/String; )V 8: return }

javap工具的选项【了解javap工具】javap工具的重要选项如下。
选项 描述
-help 打印帮助信息。
-l 打印行号和局部变量
-c 反汇编代码
-s 打印内部类型签名
-sysinfo shows system info (path, size, date, MD5 hash)
-constants 显示静态最终常数
-version 显示版本信息

    推荐阅读