java-JAVA serializable 类 未声明类型为 long 的静态终态

问题描述

JAVA serializable 类 未声明类型为 long 的静态终态

新手,就是完全照书上码了一段,但怎么会有这些提示?
![

图片说明](http://img.ask.csdn.net/upload/201502/18/1424249621_652792.png)

还有一张传不上去

这都是些什么问题?麻烦大致讲下 谢谢

代码如下

 import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Test extends JFrame implements ActionListener{
    JLabel lbl1,lbl2;
    JTextField txt1,txt2,txtResult;
    JButton btnCalc;

    public Test(){
        super("我的第一个Swing程序");
        txt1=new JTextField(5);
        lbl1=new JLabel("=");
        txtResult=new JTextField(7);
        txtResult.setEditable(false);
        btnCalc=new JButton("计算");
        btnCalc.addActionListener(this);

        Container c=getContentPane();
        c.setLayout(new FlowLayout());
        c.add(txt1);
        c.add(lbl1);
        c.add(txt2);
        c.add(lbl2);
        c.add(txtResult);
        c.add(btnCalc);

        setSize(500,100);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public void actionPerformed(ActionEvent e){
        float num1=0,num2=0,result=0;
        try{
            num1=Float.parseFloat(txt1.getText());
            num2=Float.parseFloat(txt2.getText());
            result=num1+num2;
        }catch(Exception ex){
            txtResult.setText("数据非法!");
            return;
        }
        txtResult.setText(Float.valueOf(result).toString());
    }

    public static void main(String[] args){
        new Test();
    }

}

解决方案

    虽然你没有直接实现Serializable,接口,但你继承的javax.swing.JFrame这个类实现了Serializable接口。
    个人建议学习类的时候,留意下类实现哪些了接口(接口你已经学习过的)。用面向对象的思想去看类实现了哪些接口,可以理解为对象应该具备哪些功能(所以实现对应的接口)。
    前几天在家没网,回复的有点慢。

解决方案二:

你写的这个类实现 java.io.Serializable 接口,实现该接口表示以启用其序列化功能。提示 private static final long serialVersionUID,添加一个final修饰的序列化版本号(变量的值不可以改变)。
如果你没有添加serialVersionUID,并且修改了成员变量,就可能抛出一个InvalidClassException异常。
其实,这个提示并不是错误,只是一个警告,表示你写的代码可能会出现问题。

解决方案三:

这个东西是在你的类进行序列化传输的时候,进行序列化和反序列化的需要使用的。这个值就相当类的id值。
但是IDE考虑到如果缺少这个值,反序列化话的时候会出现意想不到的结果,所以建议你显式声明这个值。

时间: 2024-11-02 08:29:25

java-JAVA serializable 类 未声明类型为 long 的静态终态的相关文章

为什么java中的类里面还能声明一个静态的自己

问题描述 为什么java中的类里面还能声明一个静态的自己 如题,感觉这种情况好诡异,能不能解释一下下面这段代码的流程呢?代码如下 public class CameraInterface { private static final String TAG = "yanzi"; private Camera mCamera; private Camera.Parameters mParams; private boolean isPreviewing = false; private f

Java类的声明和修饰词

*类的声明 [修饰符] class <类名> [extends 父类名] [implements 接口列表]{ } 修饰符:可选,用于指定访问权限,可用值为public,abstract和finnal. 类名:一般情况下,要求首字母要大写. extends 父类名:可选,用于指定要定义的类继承于哪个父类. implements 接口列表:用于指定该类实现的是那些接口. 一个类被声明为public,就表明该类可以被所有其他的类访问和引用,也就是说程序的其他部分可以创建这个类的对象,访问这个类内部

JAVA类型和SQL类型的匹配

已动态创建表为例 (1)    public class DataType {      private int code;      private String SQLType;      private String localType = null;      private String params = null;      private boolean needsSetting = true;       public DataType(int code, String SQLT

Java的string类常量池及不可变性

1.String常量池     当使用new String("hello")时,JVM会先使用常量池来管理"hello"直接量,再调用String类的构造器来创建一个新的String对象,新创建的对象被保存在堆内存中.即new String("hello")一共产生了两个字符串对象. [常量池constant pool]管理在编译时被确定并保存在已编译的.class文件中的一些数据,包括关于类.方法.接口中的常量,和字符串常量.  [字符串常量池

Java中的类反射机制

一.反射的概念 :反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩.其中LEAD/LEAD++ .OpenC++ .MetaXa和OpenJava等就是基于反射机制的语言.最近,反射机制也被应用到了视窗系统.操作系统和文件系统中. 反射本身并不是一个新概念,它可能会使我们联想到光学中的反射概念,尽管计算机科学

java中File类中的常用的方法

1.创建  boolean createNewFile();在指定路径创建文件,如果文件已经存在,则不创建,返回false.输出流                          对象一旦创建,如果文件存在,则会覆盖.  boolean mkdir():创建一级文件夹  boolean mkdirs():创建多级文件夹 调用该类的一个方法createNewFile(),但是在实际操作中需要注意一些事项,如判断文件是否存在,以及如何向新建文件中写入数据等.  代码如下 复制代码 import j

java之Object类用法实例_java

本文实例讲述了java中Object类用法.分享给大家供大家参考.具体如下: 1.Object类是所有java类的基类 如果在类的声明中未使用extends关键字指明其基类,则默认基类为Object类,ex: public class Person{ ~~~~~ } 等价于 public class Person extends Object{ ~~~~~ } 2.Object类之equals方法 ①.Object类中定义有: public boolean equals(Object obj)方

深入研究java.lang.Runtime类【转】

  转自:http://blog.csdn.net/lastsweetop/article/details/3961911 目录(?)[-] javalang 类 Runtime getRuntime exit addShutdownHook removeShutdownHook halt runFinalizersOnExit exec exec exec exec exec exec availableProcessors freeMemory totalMemory maxMemory g

java中为什么有的变量声明而不赋值?

问题描述 java中为什么有的变量声明而不赋值? java中为什么有的变量声明而不赋值?而有的就值,那什么情况下要赋值,什么情况下不赋值 解决方案 比如对象变量,而调用这个变量的构造函数非常耗费时间,所以我们等用到的时候再创建,如果程序运行完都不访问它,就根本不创建,这样可以提高效率. 对于简单变量,比如int float一类的,建议随手给一个初始值. 解决方案二: 你这个问题给你举个例子,你应该就能理解了 例如: int a; 这是只声明不赋值,则只会在内存的栈区创建引用,堆中并无此引用的指向