Cosa significa" () V " in una firma di classe?
Ho creato un costruttore con Javassist che non ha un metodo reale
CtConstructor c = CtNewConstructor.make ( argTypes, null, newClass );
Quando sto cercando di mettere fuori la firma di questa classe
c.getSignature();
Ottengo
public Echo ()V
Sono confuso cosa significa" V"? Mi aspettavo sia public Echo (); o qualcosa di simile...
17
3 answers
La JVM utilizza un modo compatto di memorizzare le firme dei metodi, di cui i costruttori sono considerati un caso speciale.
Per il tuo esempio:
-
()
indica un metodo che non accetta argomenti -
V
indica che non restituisce nulla
Le altre parti del regime sono:
-
B
- byte -
C
- carattere -
D
- doppio -
F
- float -
I
- int -
J
- lungo -
S
- breve -
V
- vuoto -
Z
- booleano -
[
- array della cosa che segue la parentesi -
L
[nome della classe];
- istanza di questa classe, con i punti che diventano barre -
(
[args])
[tipo di ritorno] - firma del metodo
Per esempio:
public int foo(String bar, long[][] baz)
Diventerebbe
(Ljava/lang/String;[[J)I
42
Author: Simon Nickerson, 2014-01-07 14:21:56
" V "determina il tipo di risultato"void"
4
Author: Philip Helger, 2012-03-28 14:10:26
V in una firma di tipo significa tipo vuoto. Bytecode non differenzia i costruttori da altri metodi (diversi dall'utilizzo di un nome di metodo speciale).
3
Author: Eugene Kuleshov, 2012-03-28 14:10:00