public interface Serializable
éçŽååå¯èœã¯ã©ã¹ã®ãµãã¿ã€ããçŽååå¯èœã«ããããã«ãã¹ãŒããŒã»ã¿ã€ãã®publicãã£ãŒã«ããprotectedãã£ãŒã«ããããã³ã¢ã¯ã»ã¹å¯èœãªå Žåã¯packageãã£ãŒã«ãã®ç¶æ ãä¿åããã³åŸ©å ãã圹å²ããµãã¿ã€ããæ ãããšãã§ããŸãã ãã ãããµãã¿ã€ãããã®åœ¹å²ãæ ãããšãã§ããã®ã¯ããµãã¿ã€ãã«ãã£ãŠæ¡åŒµãããã¯ã©ã¹ã«ãã¯ã©ã¹ã®ç¶æ ãåæåããããã®åŒæ°ãªãã®ã¢ã¯ã»ã¹å¯èœãªã³ã³ã¹ãã©ã¯ã¿ãããå Žåã ãã§ãã ããã§ãªãå Žåã«çŽååå¯èœã¯ã©ã¹ã宣èšãããšãšã©ãŒã«ãªããŸãã ãšã©ãŒã¯å®è¡æã«æ€åºãããŸãã
çŽåå埩å ã®éã¯ãéçŽååå¯èœã¯ã©ã¹ã®ãã£ãŒã«ãã¯ããã®ã¯ã©ã¹ã®publicãŸãã¯protectedã®åŒæ°ãªãã®ã³ã³ã¹ãã©ã¯ã¿ã䜿ã£ãŠåæåãããŸãã åŒæ°ãªãã®ã³ã³ã¹ãã©ã¯ã¿ã¯ãçŽååå¯èœãµãã¯ã©ã¹ããã¢ã¯ã»ã¹å¯èœã§ããå¿ èŠããããŸãã çŽååå¯èœãµãã¯ã©ã¹ã®ãã£ãŒã«ãã¯ãã¹ããªãŒã ãã埩å ãããŸãã
ã°ã©ãã®å·¡åäžã«ãçŽååå¯èœã€ã³ã¿ãã§ãŒã¹ããµããŒãããŠããªããªããžã§ã¯ãã«ééããããšããããŸãã ãã®å Žåã¯ãNotSerializableExceptionãã¹ããŒããããã®äŸå€ã«ãã£ãŠéçŽååå¯èœãªããžã§ã¯ãã®ã¯ã©ã¹ãç¹å®ãããŸãã
çŽååãšçŽåå埩å ã®éã«ç¹æ®ãªæ±ããå¿ èŠãªã¯ã©ã¹ã§ã¯ãæ£ç¢ºã«æ¬¡ã®ãããªã·ã°ããã£ãæã€ç¹æ®ãªã¡ãœãããå®è£ ããå¿ èŠããããŸãã
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
private void readObjectNoData()
throws ObjectStreamException;
writeObjectã¡ãœããã¯ããã®ç¹å®ã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã®ç¶æ ãæžã蟌ãã§ã察å¿ããreadObjectã¡ãœããããªããžã§ã¯ãã®ç¶æ ã埩å ã§ããããã«ãã圹å²ãæ ããŸãã out.defaultWriteObjectãåŒã³åºãã°ããªããžã§ã¯ãã®ãã£ãŒã«ããä¿åããããã®ããã©ã«ãã®ã¡ã«ããºã ãåŒã³åºãããšãã§ããŸãã ãã®ã¡ãœããèªèº«ã¯ããã®ã¹ãŒããŒã»ã¯ã©ã¹ãŸãã¯ãµãã¯ã©ã¹ã«å±ããç¶æ ã«é¢äžããå¿ èŠã¯ãããŸããã ç¶æ ãä¿åããã«ã¯ãwriteObjectã¡ãœããã䜿ã£ãŠåã ã®ãã£ãŒã«ããObjectOutputStreamã«æžã蟌ããããŸãã¯DataOutputããµããŒãããããªããã£ãã»ããŒã¿åçšã®ã¡ãœããã䜿çšããŸãã
readObjectã¡ãœããã¯ãã¹ããªãŒã ããã®èªã¿èŸŒã¿ãšã¯ã©ã¹ã»ãã£ãŒã«ãã®åŸ©å ãè¡ã圹å²ãæ ããŸãã ãã®ã¡ãœããã¯ãin.defaultReadObjectã¡ãœãããåŒã³åºããŠããªããžã§ã¯ãã®éstaticãã£ãŒã«ãããã³étransientãã£ãŒã«ãã埩å ããããã®ããã©ã«ãã®ã¡ã«ããºã ãåŒã³åºãããšãã§ããŸãã defaultReadObjectã¡ãœããã¯ãã¹ããªãŒã ã®æ å ±ã䜿çšããŠãçŸåšã®ãªããžã§ã¯ãå ã§å¯Ÿå¿ããããã«æå®ããããã£ãŒã«ããšãšãã«ãã¹ããªãŒã ã«ä¿åãããŠãããªããžã§ã¯ãã®ãã£ãŒã«ããå²ãåœãŠãŸãã ããã§ãæ°ãããã£ãŒã«ãã远å ã§ããããã«ã¯ã©ã¹ãæ¡åŒµãããã±ãŒã¹ãåŠçãããŸãã ãã®ã¡ãœããã¯ããã®ã¹ãŒããŒã»ã¯ã©ã¹ããµãã¯ã©ã¹ã«å±ããç¶æ ã«é¢äžããå¿ èŠã¯ãããŸããã ç¶æ ãä¿åããã«ã¯ãwriteObjectã¡ãœããã䜿ã£ãŠåã ã®ãã£ãŒã«ããObjectOutputStreamã«æžã蟌ããããŸãã¯DataOutputããµããŒãããããªããã£ãã»ããŒã¿åçšã®ã¡ãœããã䜿çšããŸãã
readObjectNoDataã¡ãœããã¯ãããã¯ã©ã¹ãçŽåå埩å ããããªããžã§ã¯ãã®ã¹ãŒããŒã»ã¯ã©ã¹ãšããŠçŽååã¹ããªãŒã ã«æå®ãããŠããªããšãã«ããã®ã¯ã©ã¹ã«ã€ããŠãã®ãªããžã§ã¯ãã®ç¶æ ãåæåããŸãã ããã¯ãåãåãåŽããéãåŽãšã¯ç°ãªãããŒãžã§ã³ã®çŽåå埩å ãããã€ã³ã¹ã¿ã³ã¹ã®ã¯ã©ã¹ã䜿çšããåãåãåŽã®ããŒãžã§ã³ãéãåŽã®ããŒãžã§ã³ã«ãã£ãŠç¶æ¿ãããªãã¯ã©ã¹ãç¶æ¿ããå Žåã«çºçããå¯èœæ§ããããŸãã ãŸããçŽååã¹ããªãŒã ãæ¹å€ãããå Žåã«ãçºçããããšããããŸãããããã£ãŠãreadObjectNoDataã¯ããæªæã®ããããŸãã¯äžæ£ãªãœãŒã¹ã»ã¹ããªãŒã ã§ãã£ãŠããçŽåå埩å ããããªããžã§ã¯ããæ£ããåæåããã®ã«åœ¹ç«ã¡ãŸãã
ã¹ããªãŒã ã«ãªããžã§ã¯ããæžã蟌ããšãã«äœ¿ã代æ¿ãªããžã§ã¯ããæå®ããå¿ èŠãããçŽååå¯èœã¯ã©ã¹ã§ã¯ã次ã®ã·ã°ããã£ãæ£ç¢ºã«æå®ããŠããã®ç¹å¥ãªã¡ãœãããå®è£ ããå¿ èŠããããŸãã
ANY-ACCESS-MODIFIER Object writeReplace() throws ObjectStreamException;
ãã®writeReplaceã¡ãœãããçŽååã«ãã£ãŠåŒã³åºãããã®ã¯ãååšããŠããŠããããçŽååããããªããžã§ã¯ãã®ã¯ã©ã¹å ã§å®çŸ©ãããŠããã¡ãœããããã¢ã¯ã»ã¹å¯èœãªå Žåã§ãã ãã®ããããã®ã¡ãœããã§ã¯ãprivateãprotectedãããã³package-privateã§ã¢ã¯ã»ã¹ããããšãã§ããŸãã ãã®ã¡ãœããã«å¯Ÿãããµãã¯ã©ã¹ã®ã¢ã¯ã»ã¹ã¯ãjavaã®ã¢ã¯ã»ã¹å¯èœæ§ã«ãŒã«ã«æºæ ããŸãã
代æ¿ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãã¹ããªãŒã ããèªã¿èŸŒããšãã«ãã®ãªããžã§ã¯ããæå®ããå¿ èŠã®ããã¯ã©ã¹ã§ã¯ã次ã®ã·ã°ããã£ãæ£ç¢ºã«æå®ããŠããã®ç¹å¥ãªã¡ãœãããå®è£ ããå¿ èŠããããŸãã
ANY-ACCESS-MODIFIER Object readResolve() throws ObjectStreamException;
ãã®readResolveã¡ãœããã¯ãwriteReplaceãšåãåŒã³åºãã«ãŒã«ãšã¢ã¯ã»ã¹å¯èœæ§ã«ãŒã«ã«æºæ ããŸãã
çŽååã©ã³ã¿ã€ã ã¯ãåçŽååå¯èœã¯ã©ã¹ã«ããŒãžã§ã³çªå·serialVersionUIDãé¢é£ä»ããŸããããã¯ãçŽåå埩å
äžã«ãçŽååãªããžã§ã¯ãã®éä¿¡åŽãšåä¿¡åŽããçŽååã«é¢ããŠäºææ§ã®ãããªããžã§ã¯ãã®ã¯ã©ã¹ãããŒããããã©ããã確èªããããã«äœ¿ãããŸãã 察å¿ããéä¿¡åŽã®ã¯ã©ã¹ãšã¯ç°ãªãserialVersionUIDãæã€ãªããžã§ã¯ãã®ã¯ã©ã¹ãåä¿¡åŽãããŒãããå ŽåãçŽåå埩å
ã§ã¯InvalidClassExceptionãçºçããŸãã ãã£ãŒã«ãå"serialVersionUID"ã宣èšããããšã«ãã£ãŠãçŽååå¯èœã¯ã©ã¹ã¯ç¬èªã®serialVersionUIDãæç€ºçã«å®£èšã§ããŸãããã®ãã£ãŒã«ãåã¯ã次ã®ããã«staticãfinalãããã³longåã§ããå¿
èŠããããŸãã
ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;çŽååå¯èœã¯ã©ã¹ãserialVersionUIDãæç€ºçã«å®£èšããªãå ŽåãçŽååã©ã³ã¿ã€ã ã¯ãJava(TM)ãªããžã§ã¯ãçŽåå仿§ãã§èª¬æãããŠããããã«ãã¯ã©ã¹ã®ããŸããŸãªåŽé¢ã«åºã¥ããŠãã¯ã©ã¹ã®serialVersionUIDã®ããã©ã«ãå€ãèšç®ããŸãã ãã ãããã¹ãŠã®çŽååå¯èœã¯ã©ã¹ãserialVersionUIDå€ãæç€ºçã«å®£èšããããšã匷ããèŠãããŸããããã¯ãããã©ã«ãã®serialVersionUIDã®èšç®ããã³ã³ãã€ã©ã®å®è£ ã«ãã£ãŠç°ãªãå¯èœæ§ã®ããã¯ã©ã¹ã®è©³çްã«ããããŠåœ±é¿ãåãããããçŽåå埩å äžã«äºæããªã
InvalidClassExceptionãçºçããå¯èœæ§ãããããã§ãã ãããã£ãŠãjavaã³ã³ãã€ã©ã®å®è£
ãç°ãªã£ãŠãserialVersionUIDå€ã®äžè²«æ§ã確ä¿ã«ããã«ã¯ãçŽååå¯èœã¯ã©ã¹ãserialVersionUIDå€ãæç€ºçã«å®£èšããªããã°ãããŸããã ãŸããserialVersionUIDã®æç€ºçãªå®£èšã§ã¯private修食åã䜿çšããããšã匷ããèŠãããŸãããã®ãããªå®£èšã¯çŽæ¥çã«å®£èšããã¯ã©ã¹ã«ã®ã¿é©çšãããããã§ããã€ãŸããserialVersionUIDãã£ãŒã«ãã¯ç¶æ¿ãããã¡ã³ããŒã®ããã«äœ¿ãããããããŸããã é
åã¯ã©ã¹ã¯serialVersionUIDãæç€ºçã«å®£èšã§ããªããããåžžã«ããã©ã«ãã®èšç®å€ãæã¡ãŸãããé
åã¯ã©ã¹ã«é¢ããŠã¯serialVersionUIDå€ã®äžèŽèŠä»¶ã¯é©çšãããŸããã ObjectOutputStreamãObjectInputStreamãObjectOutputãObjectInputãExternalizable ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã