Tanda tangan metode java. Teman -teman yang ingin melakukan pengembangan java juga tahu bahwa pentingnya tanda tangan metode adalah penjelasan yang lebih baik tentang kelebihan metode, terutama dalam optimasi berikutnya. Ini catatannya. Teman -teman yang telah melihatnya juga bisa membacanya.
Arti tanda tangan metode
Untuk metode dengan nama yang berbeda dan nama yang berbeda dengan nama yang sama, tanda tangan metode tidak terlalu bermakna, tetapi untuk metode yang kelebihan beban, tanda tangan metode sangat bermakna. Karena nama metode antara metode yang kelebihan beban adalah sama, kita harus menemukan elemen lain dari elemen lain yang membentuk metode dan komposisi nama metode yang secara unik dapat menunjukkan metode ini, dan badan metode tidak akan dipertimbangkan. Maka itu adalah daftar parameter formal dan nilai pengembalian. Namun, bagi mereka yang menyebut metode ini, pentingnya daftar tipe data parameter formal metode jauh lebih tinggi daripada nilai pengembalian, sehingga tanda tangan metode terdiri dari nama metode + daftar parameter formal. Dengan kata lain, nama metode dan daftar tipe data parameter formal dapat secara unik menentukan metode, dan tidak memiliki hubungan dengan nilai pengembalian metode. Ini adalah dasar penting untuk menilai kelebihan beban, sehingga kode berikut tidak diizinkan.
public long aaaa () {} public int aaaa () {}Metode format tanda tangan
Pertama, mari kita lihat beberapa metode dan tanda tangan metode mereka:
public void test1 () {} test1 () vpublic void test2 (string str) test2 (ljava/lang/string;) vpublic int test3 () {} test3 () i Dari tiga contoh di atas, kita dapat melihat beberapa aturan kecil:
Tanda tangan metode yang disediakan oleh JVM sebenarnya terdiri dari tiga bagian: nama metode (contoh di atas tidak menulis nama kelas lengkap untuk kesederhanaan), daftar parameter formal, dan nilai pengembalian. Bentuk dasarnya adalah:
Nama kelas penuh. Nama Metode (Daftar Jenis Data Parameter Formal) Nilai Pengembalian Jenis Data
Karakter khusus/makna huruf dalam tanda tangan metode java
| Karakter Khusus | Tipe data | Instruksi khusus |
|---|---|---|
| V | ruang kosong | Umumnya digunakan untuk mewakili nilai pengembalian metode |
| Z | Boolean | |
| B | byte | |
| C | arang | |
| S | Pendek | |
| SAYA | int | |
| J | panjang | |
| F | mengambang | |
| D | dobel | |
| [ | Array | Mulailah dengan [, dan dikombinasikan dengan karakter khusus lainnya, mewakili berbagai tipe data yang sesuai, dan beberapa [mewakili beberapa array beberapa dimensi |
| L | Nama kategori lengkap; | Jenis referensi dimulai dengan L; diakhiri dengan seluruh nama kelas jenis referensi di tengah |
Harus dicatat bahwa ketika metode ini kelebihan beban, nilai pengembalian metode tidak memiliki arti, itu ditentukan oleh nama metode dan daftar parameter.
Menghasilkan tanda tangan metode menggunakan javap
Kelas Perpustakaan Kelas
$ javap -s java.lang.string dikompilasi dari "string.java" kelas akhir java.lang.string memperluas java.lang.Object mengimplementasikan java.io.serializable, java.lang.CoBable, java.lang.chareseSeence {public static final java.utile.utile. Tanda tangan: ljava/util/pembanding; publik java.lang.string (); Signature: () v Public java.lang.string (java.lang.string); Tanda tangan: (ljava/lang/string;) v public java.lang.string (char []); Tanda tangan: ([c) v java.lang.string publik (char [], int, int); Signature: ([CII) v Public java.lang.string (int [], int, int); Tanda tangan: ([iii) v java.lang.string (byte [], int, int); Signature: ([biii) v publik java.lang.string (byte [], int); Signature: ([biii) v publik java.lang.string (byte [], int); Tanda tangan: ([bi) v publik java.lang.string (byte [], int, int, java.lang.string) melempar java.io.unsupportedencodingException; Tanda tangan: ([biiljava/lang/string;) v publik java.lang.string (byte [], int, int, java.nio.charset.charset); Tanda tangan: ([biiljava/nio/charset/charset;) v publik java.lang.string (byte [], java.lang.string) melempar java.io.unsupportedencodingException; Tanda tangan: ([bljava/lang/string;) v publik java.lang.string (byte [], java.nio.charset.charset); Tanda tangan: ([Bljava/nio/charset/charset;) v publik java.lang.string (byte [], int, int); Tanda tangan: ([bii) v ...Kelas khusus
paket com.demo; kelas publik sigtest {public static final string name = null; data int getName (int [], indeks panjang) {return 0; }} Keluaran
$ javac sigtest.java $ javap -s -p com.demo.sigtestCompile dari "sigtest.java" kelas publik com.demo.sigtest memperluas nama java.lang.Object {public static final java.lang.string nama; Tanda tangan: ljava/lang/string; public com.demo.sigtest (); Tanda tangan: () vpublic int getName (int [], panjang); Signature: ([ij) istatic {}; Tanda tangan: () v}-S berarti mencetak informasi tanda tangan
-P berarti mencetak informasi tanda tangan dari semua fungsi dan anggota. Secara default, hanya informasi tanda tangan publik yang dicetak
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!