Estaba jugando con la API de reflexión de Java y observé que los métodos con la lista de argumentos varicos se vuelven transitorios. ¿Por qué es eso y qué significa la palabra clave transient
en este contexto?¿Por qué los métodos Java con varargs identificados como transitorios?
De Java Glosario, transitoria:
una palabra clave en el lenguaje de programación Java que indica que un campo no es parte de la forma de serie de un objeto. Cuando un objeto se serializa, los valores de sus campos transitorios no se incluyen en la representación en serie, mientras que los valores de sus campos no transitorios se incluyen.
Sin embargo, esta definición no dice nada sobre los métodos. ¿Algunas ideas?
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){}
}
Salidas:
main --> public static
foo --> public static transient
¡Oh, interesante! Pensé que los métodos no se serializaron, así que ahora tengo curiosidad. – Kris
Increíble hallazgo. :) – biziclop
@biziclop qué es tan sorprendente, intente 'Modifier.toString (-1)', mucho mejor – bestsss