2013-08-27 41 views
-1

我剛開始學習Java編程。我在Applets的第一章中給出了這個程序(Applet類),它給了我這個錯誤。我試圖找到一個解決方案,但不能。Applet(不聲明long類型的靜態最終serialVersionUID字段)

按照書上的這個程序應該顯示一個窗口,但是當我擴展Applet類我得到這個錯誤:

「在這一行 多個標記 - 可序列化類AppletSkel不聲明static final的serialVersionUID領域 類型long - 公共類型AppletSkel必須在其自己的文件中定義「

繼承人我的代碼;

//An Applet Skeleton 

import java.awt.*; 
import java.applet.*; 

/*<applet code="Appletskel" width=300 height=100> 
</applet>*/ 

//錯誤

public class AppletSkel extends Applet { 
     public void init(){ 
    } 

     public void start() { 

     } 

     public void stop(){ 

     } 

     public void destroy() { 

     } 

     public void paint(Graphics g){ 
     } 
+0

如果你使用eclipse,你可以點擊那個警告,Quickfix並選擇'Add generated serial version ID'選項 - 然後eclipse會爲你添加一個生成的串行版本ID。 – Lonzak

回答

3

第一消息不是錯誤而是一個警告。由於Applet實現了Serializable接口,它應該有一個唯一的稱爲serialVersionUID的長標識符來跟隨接口的合同。編譯器警告你,你的班級不遵守這個規則,但請注意,這只是一個警告。你的代碼仍然會編譯(如果沒有其他問題)並仍然運行(如果沒有其他問題)。告訴編譯器只是「閉嘴」,而忽略了問題

一種方法是使用註釋:

@SuppressWarnings("serial") 
public class MyFoo { 
    //... 
} 

第二編譯器消息是真實的:只要你的類聲明之前@SuppressWarnings("serial")編譯錯誤:

The public type AppletSkel must be defined in its own file

您需要確保您的文件名與類名匹配。它應該是AppletSkel.java。這必須修復以使代碼運行。

相關問題