第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

這是什么意思:可序列化類未聲明靜態(tài)最終的serialVersionUID字段?

這是什么意思:可序列化類未聲明靜態(tài)最終的serialVersionUID字段?

一只萌萌小番薯 2019-11-25 14:16:03
我在標(biāo)題中給出了警告消息。我想了解并刪除它。我已經(jīng)找到了關(guān)于該問題的一些答案,但是由于技術(shù)術(shù)語過多,我不理解這些答案。是否可以用簡單的詞來解釋這個問題?PS,我知道什么是OOP。我知道什么是對象,類,方法,字段和實例化。PPS如果有人需要我的代碼,請在這里:import java.awt.*;import javax.swing.*;public class HelloWorldSwing extends JFrame {        JTextArea m_resultArea = new JTextArea(6, 30);        //====================================================== constructor        public HelloWorldSwing() {            //... Set initial text, scrolling, and border.            m_resultArea.setText("Enter more text to see scrollbars");            JScrollPane scrollingArea = new JScrollPane(m_resultArea);            scrollingArea.setBorder(BorderFactory.createEmptyBorder(10,5,10,5));            // Get the content pane, set layout, add to center            Container content = this.getContentPane();            content.setLayout(new BorderLayout());            content.add(scrollingArea, BorderLayout.CENTER);            this.pack();        }        public static void createAndViewJFrame() {            JFrame win = new HelloWorldSwing();            win.setTitle("TextAreaDemo");            win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            win.setVisible(true);        }        //============================================================= main        public static void main(String[] args) {            SwingUtilities.invokeLater(new Runnable(){                public void run(){                    createAndViewJFrame();                }            });        }}
查看完整描述

3 回答

?
揚帆大魚

TA貢獻(xiàn)1799條經(jīng)驗 獲得超9個贊

從javadoc:


序列化運行時與每個可序列化的類關(guān)聯(lián)一個版本號,稱為serialVersionUID,在反序列化過程中使用該版本號來驗證序列化對象的發(fā)送者和接收者是否已加載了該對象的與序列化兼容的類。如果接收者為對象加載的類serialVersionUID與相應(yīng)的發(fā)送者的類不同,則反序列化將導(dǎo)致InvalidClassException。可序列化的類可以serialVersionUID通過聲明一個"serialVersionUID"必須為靜態(tài),最終且類型為long 的字段來顯式聲明其自身:


您可以將IDE配置為:


忽略它,而不是發(fā)出警告。

自動生成一個id

根據(jù)您的其他問題“可能是所討論的警告消息是我的GUI應(yīng)用程序凍結(jié)的原因嗎?”:


不,不可能。僅當(dāng)序列化對象并在類已更改的其他位置(或時間)對對象進(jìn)行反序列化時,它才可能導(dǎo)致問題,并且不會導(dǎo)致凍結(jié),而會導(dǎo)致凍結(jié)InvalidClassException。


查看完整回答
反對 回復(fù) 2019-11-25
?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊

警告的原因已在此處記錄,簡單的修復(fù)方法是關(guān)閉警告或在代碼中添加以下聲明以提供版本UID。實際值無關(guān)緊要,如果愿意,可以從999開始,但是在對類進(jìn)行不兼容的更改時,請更改為實際值。


public class HelloWorldSwing extends JFrame {


        JTextArea m_resultArea = new JTextArea(6, 30);

        private static final long serialVersionUID = 1L;


查看完整回答
反對 回復(fù) 2019-11-25
?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗 獲得超9個贊

到目前為止,其他答案都有很多技術(shù)信息。我將嘗試按要求用簡單的方式回答。


如果要將對象轉(zhuǎn)儲到原始緩沖區(qū),將其保存到磁盤,以二進(jìn)制流傳輸(例如,通過網(wǎng)絡(luò)套接字發(fā)送對象)或以其他方式創(chuàng)建序列化對象,則對對象實例進(jìn)行序列化對象的二進(jìn)制表示形式。(有關(guān)序列化的更多信息,請參見Wikipedia上的Java序列化)。


如果您不想序列化您的類,則可以在類上方添加注釋@SuppressWarnings("serial")。


如果要序列化,那么您將有很多事情要擔(dān)心,所有問題都圍繞UUID的正確使用?;旧?,UUID是一種“版本化”您要序列化的對象的方法,這樣,無論是反序列化的進(jìn)程都知道它已正確地反序列化。我將查看確保序列化對象的正確版本控制以獲取更多信息。


查看完整回答
反對 回復(fù) 2019-11-25
  • 3 回答
  • 0 關(guān)注
  • 1068 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號