簡體   English   中英

Java如何將一個類定義或檢測為可序列化的類?

[英]How does Java define or detect a class as a serializable class?

我正在使用擴展Swing對象類的類(例如, public myClass extends JFrame )以及引用Screen objects/DisplayMode/Graphics方法/變量。

沒有問題。 但是,當我嘗試將Grphics實例g轉換為Graphics2D對象時,我Grphics了一個似乎很常見的 錯誤,正如在SE的多個地方所解釋的那樣,這些錯誤提供了很多答案和信息

我好奇! 因為我設法解決這個問題,不添加serialVersionID或沒有實現Serializable接口。 如前所述,我不需要將我的班級序列化。 由於解決了該問題,而無需實現/擴展可序列化的接口或添加serialVersionID-我只是很好奇地了解了編譯器在哪種情況下決定 視為更好地進行序列化……我不確定我還能如何解釋這一點。

我想知道,Java編譯器如何/在什么條件下將類限定為可序列化並要求序列號? 就我而言,既不需要序列化,也沒有指定序列化。

class SerializableClass implements Serializable

您只需實現接口。 Java從來不需要序列號。 如果不提供,則在運行時確定。

您還可以擴展可序列化的類:

class AnotherSerializableClass extends SerializableClass

如果Java本身實現了Serializable或擴展了實現Serializable的類,則Java將其分類為Serializable。

由於MyClass擴展了實現Serializable JFrame ,因此您的類是可序列化的。

有兩種情況。

  1. 該類未編譯,包含“可序列化的實現”。
  2. 該類已編譯,因此可加載,並且'Serializable.class.isAssignableFrom(thisClass)'返回true,其中'thisClass'是加載該類的結果。

(3)對所有基類重復此操作。

請注意,這是由IDE進行的,而不是Java編譯器。 這不是編譯錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM