Rumah  >  Artikel  >  Java  >  Alat Javap dan contoh dalam Java

Alat Javap dan contoh dalam Java

PHPz
PHPzke hadapan
2023-08-28 08:09:061013semak imbas

Alat Javap dan contoh dalam Java

alat javap ialah cara yang berguna untuk mendapatkan maklumat tentang kelas atau antara muka tertentu. Melalui keupayaan pembongkarannya, arahan javap, juga dikenali sebagai Java disassembler, diberi peranan untuk menyediakan maklumat dalaman yang komprehensif kepada pengguna. Daripada dua pilihan -c atau -verbose, setiap satunya memberikan hasil yang unik, pengguna boleh menemui dirinya dalam bidang orkestra kod bait dan kod bait. Jika tiada pilihan digunakan, javap menjalankan medan awam, dilindungi dan pakej serta kaedah kelas input.

tatabahasa

javap [option] [classname]

Apabila tidak menggunakan pilihan

Contoh

javap class_name

Output

C:\Users\Aashi>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 {};
}

Bila hendak menggunakan pilihan

Berikut adalah arahan untuk setiap pilihan dan cara menggunakannya -

  • -bantuan atau --bantuan atau -? -

Ini digunakan untuk mencetak mesej bantuan untuk arahan javap.

Contoh

javap -help

Output

C:\Users\Aashi>javap -help 
Usage: javap <options> <classes> 
where possible options include: 
-help --help -?      Print this usage message
-version             Version information
-V  -verbose         Print additional information
-1                   Print line number and local variable tables
-public              Show only public classes and members
-protected           Show protected/public classes and members
-package             Show package/protected/public classes and members (default)
-p -private          Show all classes and members
-C                   Disassemble the code
-S                   Print internal type signatures
-sysinfo             Show system info (path, size, date, MD5 hash) of class being processed
-constants           Show final constants
-classpath <path>    Specify where to find user class files
-cp <path>           Specify where to find user class files
-bootclasspath <path> Override location of bootstrap class files
  • -versi

Digunakan untuk mencetak maklumat versi Java.

Contoh

javap -version

Output

C:\Users\Aashi>javap -version
1.8.0_151
  • -v atau -verbose -

Ini digunakan untuk mencetak maklumat tambahan seperti saiz tindanan, bilangan pembolehubah setempat dan parameter kaedah.

Contoh

javap -v class_name

Output

C:\Users\Aashi>javap -v java.lang.Object
Classfile jar:file:/C:/Program%20Files/Java/jdk1.8.0_151/jre/lib/rt.jar! /java/lang/Object.class
Last modified Sep 5, 2017; size 1497 bytes
MD5 checksum 074ebc688a81170b8740f1158648a3c7 
Compiled from "Object.java"
public class java.lang.Object 
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Integer         999999
#2 - String          #16                //@
#3 = String          #38                //nanosecond timeout value out of range
#4 = String          #42               //timeout value is negative
#5 - Utf8            ()I
#6 = Utf8            ()Ljava/lang/Object;
#7 - Utf8            ()Ljava/lang/String;
#8 = Utf8            ()V
#9 - Utf8            (I)Ljava/lang/String;
#10 - Utf8           (J)V
#11 = Utf8           (JI)V
#12 - Utf8           (Ljava/lang/Object;)Z
#13 = Utf8           (Ljava/lang/String;)V
#14 - Utf8           <clinit>
#15 = Utf8           <init>
#16 - Utf8           @
#17 - Utf8           Code
#18 = Utf8           Exceptions
#19 - Utf8           Line Number Table
#20 = Utf8           Signature
#21- Utf8            Source File
#22 = Utf8           StackMapTable
#23 Utf8             Append
#24 Utf8             Clone
#25 = Utf8           Equals
#26 Utf8             finalize
#27 = Utf8           getClass
#28 Utf8             getName
#29 - Utf8           hashCode
#30 = Utf8           java/lang/Class
#31 - Utf8           java/lang/CloneNotSupportedException
#32 = Utf8           java/lang/IllegalArgumentException
#33 - Utf8           Java/lang/Integer
#34 Utf8             java/lang/InterruptedException
  • -l -

Ini digunakan untuk mencetak nombor baris dan jadual pembolehubah setempat.

Contoh

javap -l class_name

Output

C:\Users\Aashi>javap -1 java.lang.Object 
Compiled from "Object.java” 
public class java.lang.Object { 
   public java.lang.Object();
   LineNumberTable:
   line 37: 0

   public final native java.lang.Class<?> getClass();

   public native int hashCode();

   public boolean equals(java.lang.Object);
   LineNumberTable:
   line 149: 0

   protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;

   public java.lang.String toString();
   LineNumberTable:
   line 236: 0

   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;
   LineNumberTable:
   line 447: 0
   line 448: 6 
   line 451: 16 
   line 452: 26 
   line 456: 36 
   line 457: 40 
   line 460: 44
   line 461: 49

   public final void wait() throws java.lang.InterruptedException;
   LineNumberTable:
   line 502:0
   line 503: 5
   protected void finalize() throws java.lang.Throwable;
}
  • -Awam

Ini digunakan untuk mencetak kelas awam dan ahli sahaja.

Contoh

javap -public class_name

Output

C:\Users\Aashi>javap -public 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);
   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;
}
  • -dilindungi

Ini digunakan untuk mencetak kelas dan ahli yang dilindungi/awam.

Contoh

javap -protected class_name

Output

C:\Users\Aashi>javap -protected 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;
}
  • -包

Ini digunakan untuk mencetak pakej/kelas dilindungi/awam dan ahli (lalai).

Contoh

javap -package class_name

Output

C:\Users\Aashi>javap -package 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 {};
}
  • -c

Ini digunakan untuk mencetak kod nyahpasang.

Contoh

javap -c class_name

Output

C:\Users\Aashi>javap -c java.lang.Object 
Compiled from "Object.java"
public class java.lang.Object (public java.lang.Object();
Code:
0: return
public final native java.lang.Class<?> getClass();

public native int hashCode();

public boolean equals(java.lang.Object);
Code:
0: aload e
1: aload_1
2: 1f_acmpne   9
5:iconst_1 
6: goto        10
9: iconst_0
10: ireturn

protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException;

public java.lang.String toString();
Code:
0: new             #52      //class java/lang/StringBuilder
3: dup
4: invokespecial   #74     //Method java/lang/StringBuilder."<init>": ()V
7: aload_e
8: invokevirtual   #73    // Method getClass: ()Ljava/lang/Class;
11: invokevirtual  #67    // Method java/lang/class.getName:()Ljava/lang/String;
14: invokevirtual  #76   // Method java/lang/StringBuilder.append: (Ljava/lang/String;) Ljava/lang/StringBuilder;
17: 1dc            #2    // String @
19: invokevirtual  #76   // Method java/lang/StringBuilder.append: (Ljava/lang/String;)Ljava/lang/StringBuilder;
22: aload_e
23: invokevirtual  #78   // Method hashCode: ()I
26: invokestatic   #69   // Method java/lang/Integer.toHexString: (I) Ljava/lang/String;
29: invokevirtual  #76   // Method java/lang/StringBuilder.append: (Ljava/lang/String;) Ljava/lang/StringBuilder;
32: invokevirtual  #75   // Method java/lang/StringBuilder.toString: ()Ljava/lang/String;
35: areturn
public final native void notify();
  • -s -

Ini digunakan untuk mencetak tandatangan jenis dalaman.

Contoh

javap -s class_name

Output

C:\Users\Aashi>javap -s java.lang.Object 
Compiled from "Object.java" 
public class java.lang.Object { 
   public java.lang.Object(); 
   descriptor: ()V

   public final native java.lang.Class<?> getClass(); 
   descriptor: ()Ljava/lang/class;

   public native int hashCode();
   descriptor: ()I

   public boolean equals(java.lang.Object);
   descriptor: (Ljava/lang/Object;)Z

   protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; 
   descriptor:()Ljava/lang/Object;

   public java.lang.String toString();
   descriptor: ()Ljava/lang/String;

   public final native void notify();
   descriptor: ()V

   public final native void notifyAll();
   descriptor: ()V

   public final native void wait(long) throws java.lang.InterruptedException; descriptor: (J)V

   public final void wait(long, int) throws java.lang.InterruptedException; descriptor: (JI)V

   public final void wait() throws java.lang.InterruptedException; 
   descriptor: ()V
   protected void finalize() throws java.lang.Throwable;
   descriptor: ()V
   static {}; 
   descriptor: ()V
}
  • -sysinfo -

Ini digunakan untuk mencetak maklumat sistem (laluan, saiz, tarikh, cincangan MD5) kelas yang sedang diproses.

Contoh

javap -sysinfo class_name

Output

C:\Users\Aashi>javap -sysinfo java.lang.Object
Classfile jar:file:/C:/Program%20Files/Java/jdk1.8.0_151/jre/lib/rt.jar! /java/lang/Object.class 
Last modified Sep 5, 2017; size 1497 bytes
MD5 checksum 074ebc688a81170b8740f1158648a3c7 
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 {};
}
  • -malar -

Ini digunakan untuk mencetak pemalar akhir kelas.

Contoh

javap -constants class_name

Output

C:\Users\Aashi>javap -constants 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 {}; 
}

KESIMPULAN

javap tool ialah alat berbilang muka dan sangat berkuasa untuk pengekod Java, membolehkan mereka mendiagnosis dan menyahpepijat dokumen kelas, menilai medan dan kaedah serta menjana kod bersih daripada kod bait dokumen kelas. Alat yang sangat diperlukan ini sesuai untuk pembangun Java dari semua peringkat kemahiran, membolehkan mereka mengembangkan pengetahuan mereka dan menyelesaikan masalah program Java dengan mudah. Alat javap adalah milikan yang tidak boleh ditukar ganti untuk mana-mana pengaturcara yang bercita-cita tinggi dan ia pasti akan membantu dalam meningkatkan kemahiran pengaturcaraan mereka dengan cepat. Selain itu, rangkaian cirinya yang luas membantu pengekod memperhalusi amalan mereka, memberikan mereka kelebihan daya saing apabila membina aplikasi Java.

Atas ialah kandungan terperinci Alat Javap dan contoh dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Java dan C#Artikel seterusnya:Java dan C#