这个警告是怎么回事?

kk_wind 2011-08-10 04:20:05

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class TextComponentTest {
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
TextComponentFrame frame = new TextComponentFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);

}
});
}
}

class TextComponentFrame extends JFrame //serializable 类 TextComponentFrame 未声明类型为 long 的静态终态 serialVersionUID
{
public TextComponentFrame()
{
setTitle("TextComponentTest");
setSize(DEFAULT_WIDTH,DEFAULT_HIGHT);

final JTextField text = new JTextField();
final JPasswordField password = new JPasswordField();

JPanel northPanel = new JPanel();
northPanel.setLayout(new GridLayout(2,2));
northPanel.add(new JLabel("UserName: ",SwingConstants.RIGHT));
northPanel.add(text);

northPanel.add(new JLabel("Password: ",SwingConstants.RIGHT));
northPanel.add(password);

add(northPanel,BorderLayout.NORTH);

final JTextArea textArea = new JTextArea(8,40);
JScrollPane scrollPane =new JScrollPane(textArea);

add(scrollPane,BorderLayout.CENTER);

//add button to append text into the text Area
JPanel southPanel = new JPanel();

JButton insertButton = new JButton("Insert");
southPanel.add(insertButton);

insertButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event)
{
textArea.append("UserName: " + text.getText() + " Password: " + new String(password.getPassword()) +"\n");
}
});

add(southPanel,BorderLayout.SOUTH);
}
public static final int DEFAULT_WIDTH=300;
public static final int DEFAULT_HIGHT=300;
}

...全文
167 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyWalker_ONLY 2011-08-11
  • 打赏
  • 举报
回复
晕,这个警告已经说的很明确了,不用在乎。另外eclipse会有很多提示都不用管的
ctwoz 2011-08-10
  • 打赏
  • 举报
回复
加个序列化ID,主要是说明序列化版本而已…
Codefans_Fan 2011-08-10
  • 打赏
  • 举报
回复
用eclipse 点一下就解决了
like_java 2011-08-10
  • 打赏
  • 举报
回复
加入一个serialVersionUID就行了
singlark 2011-08-10
  • 打赏
  • 举报
回复
用来做序列化的版本控制
阳明 to life 2011-08-10
  • 打赏
  • 举报
回复
serialVersionUID维护的作用
比如你先有一个类
class S{
int a;
int b;
}
使用序列化存储到硬盘
结果你发现b没有用了,删掉了
然后你反序列化,如果serialVersionUID一样就会无视掉不存在的属性或者将添加的属性设为初始值
如果不加就会报错
go_boy111 2011-08-10
  • 打赏
  • 举报
回复
确实一堆答案!
kk_wind 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xwguan 的回复:]
百度搜索serialVersionUID,一堆答案,lz自己看哈
[/Quote]

风尘中国 2011-08-10
  • 打赏
  • 举报
回复
这个警告是因为TextComponentFrame类继承了JFrame而JFrame实现了序列化的接口Seriziable,序列化需要版本控制所以需要声明一个static final long类型的一个版本号,在大多数情况下不需要处理这个问题,如果想消除问题可以加入这样的一个属性
public static final long serialVersionUID=1L;

kk_wind 2011-08-10
  • 打赏
  • 举报
回复
我知道eclipse里有提示,而且告诉我了修正方法,但是我想弄明白为什么要加个UID?或者说加的这个serialVersionUID是起什么作用?
xwguan 2011-08-10
  • 打赏
  • 举报
回复
百度搜索serialVersionUID,一堆答案,lz自己看哈
lost_guy_in_scut 2011-08-10
  • 打赏
  • 举报
回复
点击TextComponentFrame 点add default generator UID 即可。
daijope 2011-08-10
  • 打赏
  • 举报
回复
有警告的话,点一下eclipse会给你提示的,,呵呵
kk_wind 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jarun 的回复:]
不明白你说的是什么
[/Quote]


class TextComponentFrame extends JFrame
//serializable 类 TextComponentFrame 未声明类型为 long 的静态终态 serialVersionUID


就是这个警告,我不太明白这个警告的意思。
xwguan 2011-08-10
  • 打赏
  • 举报
回复
加入一个serialVersionUID就行了
  • 打赏
  • 举报
回复
不明白你说的是什么

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧