Stavo giocando con Java Reflection API e ho osservato che i metodi con lista di argomenti variadici diventano transitori. Perché questo e cosa significa la parola chiave transient
in questo contesto?Perché i metodi Java con vararg identificati come transitori?
Da Java Glossario, transitoria:
Una parola chiave nel linguaggio di programmazione Java che indica che un campo non è parte della forma serializzata di un oggetto. Quando un oggetto viene serializzato, i valori dei suoi campi transitori non sono inclusi nella rappresentazione seriale, mentre i valori dei suoi campi non transitori sono inclusi.
Tuttavia questa definizione non dice nulla sui metodi. Qualche idea?
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Dummy {
public static void main(String[] args) {
for(Method m : Dummy.class.getDeclaredMethods()){
System.out.println(m.getName() + " --> "+Modifier.toString(m.getModifiers()));
}
}
public static void foo(int... args){}
}
Uscite:
main --> public static
foo --> public static transient
Oh, interessante! Avevo pensato che i metodi non diventassero serializzati quindi ora sono curioso. – Kris
Incredibile scoperta. :) – biziclop
@biziclop cosa c'è di così sorprendente, prova 'Modifier.toString (-1)', molto meglio – bestsss