Java -Methode Signatur. Freunde, die Java -Entwicklung durchführen möchten, wissen auch, dass die Bedeutung der Methodensignatur eine bessere Erklärung für die Überlastung von Methoden ist, insbesondere bei der späteren Optimierung. Hier ist eine Aufzeichnung. Freunde, die es gesehen haben, können es auch lesen.
Die Bedeutung der Methodensignatur
Bei Methoden mit unterschiedlichen Namen und den gleichnamigen Namen ist die Methodensignatur nicht sehr aussagekräftig, aber für überlastete Methoden ist die Methodensignatur sehr aussagekräftig. Da die Methodennamen zwischen überladenen Methoden gleich sind, müssen wir ein anderes Element aus den anderen Elementen finden, die die Methode und die Methodennamenzusammensetzung ausmachen, die die Methode eindeutig angeben kann, und der Methodenkörper wird nicht berücksichtigt. Dann ist es die formale Parameterliste und der Rückgabewert. Für diejenigen, die die Methode nennen, ist die Bedeutung der formalen Parameter -Datentypliste der Methode jedoch viel höher als der Rückgabewert, sodass die Methodensignatur aus dem Methodennamen + der formalen Parameterliste besteht. Das heißt, der Methodenname und die formale Parameter -Datentypliste können eine Methode eindeutig bestimmen und keine Beziehung zum Rückgabewert der Methode haben. Dies ist eine wichtige Grundlage für die Beurteilung der Überlastung, daher ist der folgende Code nicht zulässig.
public long aaaa () {} public int aaaa () {}Methodensignaturformat
Schauen wir uns zunächst verschiedene Methoden und ihre Methodensignaturen an:
public void test1 () {} test1 () vpublic void test2 (String Str) test2 (ljava/lang/String;) vpublic int test3 () {} test3 () i Aus den oben genannten drei Beispielen können wir einfach einige kleine Regeln sehen:
Die von JVM bereitgestellte Methodensignatur besteht tatsächlich aus drei Teilen: Methodenname (das obige Beispiel hat den vollständigen Klassennamen für die Einfachheit nicht geschrieben), formale Parameterliste und Rückgabewert. Die Grundform ist:
Voller Klassenname. Methodenname (formaler Parameterdatentypliste) Rückgabewertdatentyp
Sonderzeichen/Buchstaben in der Java -Methode Signature
| Sonderzeichen | Datentyp | Besondere Anweisungen |
|---|---|---|
| V | Leere | Allgemein verwendet, um den Rückgabewert der Methode darzustellen |
| Z | boolean | |
| B | Byte | |
| C | verkohlen | |
| S | Kurz | |
| ICH | int | |
| J | lang | |
| F | schweben | |
| D | doppelt | |
| [ | Array | Beginnen Sie mit [und kombiniert mit anderen Sonderzeichen eine Array entsprechender Datentypen und mehrere [repräsentieren einige dimensionale Arrays |
| L | Vollkategorienname; | Der Referenztyp beginnt mit L; endet mit dem gesamten Klassennamen des Referenztyps in der Mitte |
Es muss beachtet werden, dass der Methodenrückgabewert, wenn die Methode überlastet ist, keine Bedeutung hat und die Liste der Methodenname und Parameterliste bestimmt wird.
Generieren Sie die Methodensignatur mit Javap generieren
Klassenbibliotheksklasse
$ javap -s java.lang.String, kompiliert aus "String.Java" Public Final Class Java.lang.String erweitert Java.lang.Object implementiert java.io.serializable, java.lang.comparable, java.lang.charsech. Signatur: ljava/util/vergleicher; Public Java.lang.String (); Signatur: () v Public Java.lang.String (Java.lang.String); Signatur: (ljava/lang/string;) gegen öffentliches java.lang.String (char []); Unterschrift: (c) gegen öffentliche Java.lang.String (char [], int, int); Signatur: ([CII) V Public Java.lang.String (int [], int, int); Signatur: ([iii) gegen öffentliches Java.lang.String (Byte [], int, int); Signatur: ([biii) gegen öffentliches java.lang.String (byte [], int); Signatur: ([biii) gegen öffentliches java.lang.String (byte [], int); Signatur: ([Bi) gegen öffentliches Java.lang.String (Byte [], int, int, java.lang.String) wirft Java.io.unsupportedenCodingException aus; Signatur: ([Biiljava/Lang/String;) v Public Java.lang.String (byte [], int, int, java.nio.charset.Charset); Signatur: ([Biiljava/nio/charset/charset;) gegen Public Java.lang.String (Byte [], Java.lang.String) wirft Java.io.unsupportedenCodingException aus; Signatur: ([Bljava/Lang/String;) v Public Java.lang.String (Byte [], Java.nio.Charset.Charset); Signatur: ([bljava/nio/charset/charset;) gegen öffentliches java.lang.String (byte [], int, int, int); Signatur: ([bii) v ...
Benutzerdefinierte Klassen
Paket com.demo; öffentliche Klasse SIGTEST {public static Final String name = null; public int getName (int [] Daten, langer Index) {return 0; }} Ausgabe
$ javac sigtest.java $ javap -s -p com.demo.sigtestcompiled aus "sigtest.java" öffentliche Klasse com.demo.sigtest erweitert java.lang.object {public statische endgültige java.lang.string Name; Signatur: ljava/lang/string; public com.demo.sigtest (); Signatur: () vpublic int getName (int [], lang); Signatur: ([ij) Istatic {}; Signatur: () v}-S bedeutet, Signaturinformationen zu drucken
-P bedeutet, die Signaturinformationen aller Funktionen und Mitglieder zu drucken. Standardmäßig werden nur öffentliche Signaturinformationen gedruckt
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!