日期:2014-05-19  浏览次数:20685 次

求老手帮看看这段代码的警告是怎么回事
代码中红字标出处为警告.
警告内容:The serializable class HelloServlet does not declare a static final serialVersionUID field of type long

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class HelloServlet extends GenericServlet {
    /**
     * Servlet启动时调用的函数
     */
    public void init() {
        System.out.println("init() was called.");
    }

    /**
     * 处理客户端的请求
     * @param req 客户端请求
     * @param res 客户端响应
     */
    @Override
    public void service(ServletRequest req, ServletResponse res)
            throws ServletExceptionIOException {
       
        System.out.println("service() was called.");
        res.setContentType("text/html; charset=UTF-8");
        // 获取输出流对象
        PrintWriter out = res.getWriter();
        // 发送HTML内容
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello, Servlet!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("Hello, Servlet!");
        out.println("</body>");
        out.println("</html>");
    }
   
    /**
     * Servlet结束时调用的函数
     */
    public void destroy() {
        System.out.println("destroy() was called.");
    }
}

------最佳解决方案--------------------
没有定义版本号。对程序没有影响。
private static final long serialVersionUID = 1L;你可以随便定义的。
你点那个警告的感叹号,可以自动添加的。
------其他解决方案--------------------
serialVersionUID相当于java类的身份证。主要用于版本控制。serialVersionUID作用是序列化时保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

其实不写也是可以的,当然为了规范还是写上吧。
警告不影响运行的,Exception就不行了。
------其他解决方案--------------------
谢谢两位了!