私は学校でSerializableを実装することについて学びましたが、もしあればオブジェクトが既にJavaでこれをやっていることは一度も言及されていませんでした。だから私の質問はタイトルにある "いくつかのオブジェクトやデータ型は、Javaによって自動的にシリアライズされます(シリアライザブルを実装する必要はありません)?"もしそうなら、その背後にある理由は何ですか?Javaによって自動的にシリアライズされるオブジェクトやデータ型がありますか(シリアライズ可能を実装する必要はありません)?
答えて
Javadocは(強調は私です)が明らかである:クラスの
直列化は にjava.io.Serializableインタフェースを実装するクラスによって有効にされます。 この インターフェイスを実装していないクラスは、状態がシリアル化またはデシリアライズされません。答えることではなく
:
「自動的 (Serializableを実装しなくても)は、Javaでシリアライズされるいくつかのオブジェクトまたはデータ型がありますか?」
答えはイエスであるJavadocはそれを追加して:
直列化可能クラスのすべてのサブタイプ自体が直列化可能です。ここで
より詳細な答えです:
1)プリミティブは事実上の直列化可能です。
2)非常に重要な数のJDKクラスがSerializable
を実装しています。これらはクライアントによって変更することができず、したがって直列化できないので意味があります。
Hereは、javadocで生成された「インタフェースjava.io.Serializableの使用」です。リストは巨大です。
3)すべての配列型は、他のJDKクラスがあることを正確に同じ理由インタフェースCloneableをとjava.io.Serializableのを実現する。(JLS 10.1 Array Types)。
4)シリアライズクラスのすべてのサブタイプは、それ自体でありますシリアライズ可能。結果として
public abstract class JComponent extends Container implements Serializable,...{...}
、その子クラスが直接Serializable
と実際に実装する必要はありません:トップレベルのコンテナを除くすべてのSwingコンポーネントの基底クラスがSerializable
を実装している例javax.swing.JComponent
については
彼らのほとんどはそれをしません。たとえば
:
public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants {...}
public class JButton extends AbstractButton implements Accessible {...}
public class JComboBox<E> extends JComponent{...}
私たちは、数値の基本クラスですNumber
のための同様のものを見ることができました。
Number
Serializable
を実装します。
public abstract class Number implements java.io.Serializable {...}
そして、多くのサブクラス推移によってSerializable
を実装:
public final class Integer extends Number implements Comparable<Integer> {...}
public final class Float extends Number implements Comparable<Float> {...}
しかしSerializable
を実装するクラスのサブクラスでもそのように明示的にjava.io.Serializable
を実装することができることに注意してください:
public class AtomicInteger extends Number implements java.io.Serializable {...}
ソースコード内で情報をより明示的にするためにおそらく行われます。
しかし、コードが不安定で、階層が変更される可能性があるコードの場合にも役立ちます。
変更が何であっても、クラスはシリアライズ可能になります。
これはまさに私が必要としていた答えでした!私は完全なスタック開発になっているので、これらの高レベルの概念を理解する必要があります。ありがとうございました! – crystalo315
- 1. CustomExceptionをシリアライズ可能にする必要がありますか?
- 2. シリアライズされたオブジェクトにメソッドを追加しましたが、シリアライズする必要はありません
- 3. オブジェクト 'ObjectID'のオブジェクトがJSONシリアライズ可能ではありません
- 4. 'ListSerializer'タイプのオブジェクトがJSONシリアライズ可能ではありません
- 5. django rest型エラーフィールドはJSONシリアライズ可能ではありません
- 6. タイプ 'CombinedExpression'のオブジェクトはJSONシリアライズ可能ではありません
- 7. Python TypeError: 'ndarray'型のオブジェクトがJSONシリアライズ可能ではありません
- 8. PyQt:データはJSONシリアライズ可能ではありません
- 9. Python: 'bytes'型のオブジェクトはJSONのシリアライズ可能ではありません
- 10. 子オブジェクトによって自動的に継承されるプログラム可能なデータはありますか?
- 11. ブール値はシリアライズ可能ではありませんか?
- 12. 治療情報がJSONシリアライズ可能ではありません
- 13. Python:TypeError:array([1.])がJSONのシリアライズ可能ではありません
- 14. TypeError:hr.employee(26、)がJSONシリアライズ可能ではありません
- 15. TypeError:datetime.datetime()がJSONシリアライズ可能ではありません
- 16. pyodbcから返された行がJSONシリアライズ可能ではありません
- 17. datetime.datetimeはJSONシリアライズ可能ではありません
- 18. TypeError:{1、3}はJSONシリアライズ可能ではありません
- 19. TypeError:district.district(11、)は、Odoov10のJSONシリアライズ可能ではありません
- 20. リストはJSONシリアライズ可能ではありません
- 21. Python 3:JSONはシリアライズ可能ではありません
- 22. メソッドオブジェクトはJSONシリアライズ可能ではありません
- 23. QuerySetはJSONシリアライズ可能ではありませんDjango
- 24. <object>はJSONシリアライズ可能ではありませんdjango
- 25. Django <object>はJSONシリアライズ可能ではありません
- 26. Python dict/list mixはJSONシリアライズ可能ではありません
- 27. TypeError:0x7f86789f9bf8のsqlalchemy.orm.attributes.InstrumentedAttributeオブジェクトがJSONシリアライズ可能ではありません
- 28. タイプエラー:JSONシリアライズ可能ではありません
- 29. bitmap image silverlightをシリアライズする必要があります
- 30. JSF 2.0マネージドBeanは常にRequest Scopedの場合はシリアライズ可能にする必要がありますか?
文字列のような意味ですか? –
[This](https://stackoverflow.com/a/945726/7852370)answerには[list](https://docs.oracle.com/javase/6/docs/api/java/io/class-インターフェイスを実装する標準ライブラリ内のクラスの/ Serializable.html)を使用します。 –
ストリングとまったく同じです。 それは私のために来ていない奇妙です!ありがとうございました! – crystalo315