一个普通的Java类:
现在我们使用JDK带的反编译工具javap来反编译Test.class,先执行下面的命令:
再使用下面的命令来得到bytecode代码:
public
class
Test
//
从Object类继承
{
public static void main(String[] args)
{
System.out.println(new Test().toString());
}
}
{
public static void main(String[] args)
{
System.out.println(new Test().toString());
}
}
现在我们使用JDK带的反编译工具javap来反编译Test.class,先执行下面的命令:
javap Test
>
Test.txt
打开Test.txt文件后,会看到如下的代码:
public
class
Test
extends
java.lang.Object
{
public Test();
public static void main(java.lang.String[]);
}
public Test();
public static void main(java.lang.String[]);
}
再使用下面的命令来得到bytecode代码:
javap
-
c Test
>
Test1.txt
打开Test1.txt后,会看到如下的代码:
public
class
Test
extends
java.lang.Object
{
public Test();
Code:
0: aload_0
1: invokespecial #8; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #16; //Field java/lang/System.out:Ljava/io/PrintStream;
3: new #1; //class Test
6: dup
7: invokespecial #22; //Method "<init>":()V
10: invokevirtual #23; //Method java/lang/Object.toString:()Ljava/lang/String;
13: invokevirtual #27; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
16: return
}
public Test();
Code:
0: aload_0
1: invokespecial #8; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #16; //Field java/lang/System.out:Ljava/io/PrintStream;
3: new #1; //class Test
6: dup
7: invokespecial #22; //Method "<init>":()V
10: invokevirtual #23; //Method java/lang/Object.toString:()Ljava/lang/String;
13: invokevirtual #27; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
16: return
}