21xrx.com
2024-11-08 23:23:38 Friday
登录
文章检索 我的文章 写文章
Java开发者必须掌握的工具——javap命令
2023-06-14 21:45:13 深夜i     --     --
javap命令 Java开发 成员变量和方法 访问修饰符 参数和返回值类型

在Java开发的日常工作中,我们经常需要去查看一个类的结构和信息,比如它的成员变量、方法、接口等等。这时候,就需要用到javap命令。

javap命令是Java JDK自带的一个工具,它可以用来反编译.class文件,查看该类的成员变量和方法声明信息。

下面是一个简单的Java类:


public class HelloWorld {

  private String message;

  public HelloWorld(String message)

    this.message = message;

  

  public void sayHello() {

    System.out.println(message);

  }

}

我们可以使用javac命令将它编译成.class文件,接着使用javap命令查看该类的信息:


javap -verbose HelloWorld

输出内容:


Classfile /path/to/HelloWorld.class

 Last modified May 10, 2022; size 411 bytes

 MD5 checksum 3f8eca9d5ed449aaee3edb4946c1b06c

 Compiled from "HelloWorld.java"

public class HelloWorld

 minor version: 0

 major version: 59

 flags: (0x0021) ACC_PUBLIC, ACC_SUPER

 this_class: #2 // HelloWorld

 super_class: #4 // java/lang/Object

 interfaces: 0

 fields:

  private java.lang.String message;

   descriptor: Ljava/lang/String;

   flags: (0x0002) ACC_PRIVATE

 methods:

  public void sayHello();

   descriptor: ()V

   flags: (0x0001) ACC_PUBLIC

   Code:

    stack=2, locals=1, args_size=1

      0: getstatic   #16         // Field java/lang/System.out:Ljava/io/PrintStream;

      3: aload_0

      4: getfield   #22         // Field message:Ljava/lang/String;

      7: invokevirtual #28         // Method java/io/PrintStream.println:(Ljava/lang/String;)V

     10: return

  public HelloWorld(java.lang.String);

   descriptor: (Ljava/lang/String;)V

   flags: (0x0001) ACC_PUBLIC

   Code:

    stack=2, locals=2, args_size=2

      0: aload_0

      1: invokespecial #34         // Method java/lang/Object." ":()V

      4: aload_0

      5: aload_1

      6: putfield   #22         // Field message:Ljava/lang/String;

      9: return

}

从上面的输出中,我们可以看到该类的一些信息,包括类名、成员变量、方法的访问修饰符、方法的参数和返回值类型等。

javap命令是一个非常实用的工具,可以帮助我们更好地了解Java类的内部结构和实现原理,让我们在开发中更加得心应手。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复