public class Contact implements Serializable {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
- Kiedy powinienem wdrożyć
Serializable
interfejs? - Dlaczego to robimy?
- Czy daje jakieś korzyści lub bezpieczeństwo?
java
serialization
theJava
źródło
źródło
Odpowiedzi:
Od czego to dotyczy „serializacji”? :
Dlatego implementuj
Serializable
interfejs, gdy potrzebujesz przechowywać kopię obiektu, wyślij je do innego procesu, który działa w tym samym systemie lub w sieci.Ponieważ chcesz przechowywać lub wysyłać obiekt.
Ułatwia przechowywanie i wysyłanie przedmiotów. Nie ma to nic wspólnego z bezpieczeństwem.
źródło
Zaimplementuj
Serializable
interfejs, jeśli chcesz mieć możliwość konwersji wystąpienia klasy na serię bajtów lub gdy myślisz, żeSerializable
obiekt może odwoływać się do wystąpienia Twojej klasy.Serializable
klasy są przydatne, gdy chcesz utrwalać ich instancje lub wysyłać je przez sieć.Instancje
Serializable
klas można łatwo przesyłać. Serializacja ma jednak pewne konsekwencje dla bezpieczeństwa. Przeczytaj efektywną Javę Joshuy Blocha .źródło
Odpowiedź na to pytanie brzmi, być może zaskakująco, nigdy lub bardziej realistycznie tylko wtedy, gdy jesteś zmuszony do współdziałania ze starszym kodem . To jest zalecenie w Effective Java, 3rd Edition autorstwa Joshua Blocha:
Główny architekt Oracle, Mark Reinhold, twierdzi, że usunięcie obecnego mechanizmu serializacji Java jest celem długoterminowym.
Dlaczego serializacja Java jest wadliwa
Java udostępnia jako część języka schemat serializacji, na który można się zdecydować za pomocą
Serializable
interfejsu. Ten schemat ma jednak kilka trudnych do usunięcia wad i powinien być traktowany przez projektantów języka Java jako nieudany eksperyment.Co zamiast tego zrobić
Zamiast tego użyj schematu serializacji, który możesz jawnie kontrolować. Takie jak bufory protokołów, JSON, XML lub własny niestandardowy schemat.
źródło