Comme quelques autres personnes l'ont dit, la méthode n'est pas stockée dans la sérialisation.
Vous pouvez facilement faire un test pour montrer ceci dans cet exemple avec le code suivant.
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class SerializationTest {
public static void main(String[] args) {
serialize(true);
serialize(false);
}
public static void serialize(boolean aOrB) {
FileOutputStream fos = null;
ObjectOutputStream out = null;
try {
fos = new FileOutputStream("output.txt");
out = new ObjectOutputStream(fos);
out.writeObject(aOrB ? new A() : new B());
out.close();
fos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
File file = new File("output.txt");
System.out.println(file.length());
}
public static class A implements Serializable {
int a = 0;
}
public static class B implements Serializable {
int a = 0;
public int foo(int a) {
return a;
}
}
}
Pour moi, ce imprime sur
48
48
Ce n'est pas une fonction. C'est ce qu'on appelle une méthode. – eleven81
lol, oui, c'est ce qu'on appelle une méthode, et vous feriez mieux de faire un test. –
il n'est pas testable, sauf en regardant la source VM, sauf si vous faites ce que les autres font et supposer que la forme sérialisée est la même que la forme en mémoire. – TofuBeer