2012-06-15 2 views
9

Я только начал на AWT и сделал простую программу в нем, он отлично работает, но он показывает предупреждающее сообщение в затмении, которое я не понимаю:предупреждение serialVersionUID поля в затмении

сериализуемого класса TestGUI не объявляет статическое конечного serialVersionUID поля типа длинного

Я знаю, что предупреждающее сообщение не связанно с AWT, и не было никакой необходимости размещать весь свой код, но когда я попытался сделать SSCCE коды предупреждение также исчезло. Поскольку я не знаю, почему это предупреждение создано, я не знал, какую часть сохранить в моем SSCCE. Отсюда весь код!

Мой код:

import java.awt.Frame; 
import java.awt.Graphics; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 

public class TestGUI extends Frame { 
    /** 
    * @param args 
    */ 
    private int x = 50; 
    private int y = 50; 

    TestGUI(String s) { 
     addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent we) { 
       setVisible(false); 
       System.exit(0); 
      } 
     }); 
     addMouseListener(new MouseAdapter() { 
      public void mouseClicked(MouseEvent me) { 
       x = me.getX(); 
       y = me.getY(); 
       repaint(); 
      } 
     }); 
    } 

    public void paint(Graphics g) { 
     g.drawString("Hello Princess", 100, 100); 
     g.drawString("Mouse clicked here", x, y); 
    } 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     TestGUI tg = new TestGUI("first"); 
     tg.setSize(500, 500); 
     tg.setVisible(true); 
    } 

} 

Thanx заранее!

+1

Возможный дубликат [Что такое serialVersionUID и почему я должен его использовать?] (Http://stackoverflow.com/questions/285793/what-is-a-serialversionuid-and-why-should-i-use- это) –

ответ

20

Eclipse, используемый, чтобы иметь, что предупреждение по умолчанию отключено. В Eclipse Indigo (3.7) по умолчанию было включено предупреждение. Вы можете изменить настройку в 2-х местах, одну для всего в рабочей области и одну для одного проекта.

Чтобы отключить предупреждения для всех проектов в рабочей, перейдите к Window/Preferences и откройте вкладку Java/Compiler/«Ошибки/предупреждения», и открыть «Потенциальные проблемы программирования», а затем изменить значение " Сериализуемый класс без serialVersionUID ", чтобы игнорировать (или то, что вы считаете нужным).

Чтобы отключить предупреждение для одного проекта, вы можете щелкнуть правой кнопкой мыши на проекте, выберите Свойства, затем перейдите к Java Compiler/«Ошибки/предупреждения», нажмите кнопку Включить конкретные параметры проекта (при необходимости), а затем выберите «Потенциальные проблемы программирования» и измените значение «Сериализуемый класс без serialVersionUID» на «Игнорировать» (или, что вам кажется, подходит).

5

TestGUI распространяется Frame, который в свою очередь реализует Serializable. Требование интерфейса Serializable должно иметь поле final long serialVersionUID. См. Serializable javadoc для получения дополнительной информации.

Цитируя важную часть этого Javadoc:

...it is strongly recommended that all serializable classes explicitly declare 
serialVersionUID values, since the default serialVersionUID computation is highly 
sensitive to class details that may vary depending on compiler implementations... 
+0

, но я работал над сериализацией в прошлом и никогда не объявлял такого поля и до сих пор не получил этого предупреждения. В чем разница на этот раз? или что было раньше раньше? –

+0

также говорит: «Если сериализуемый класс явно не объявляет serialVersionUID, то среда выполнения сериализации будет вычислять значение по умолчанию serialVersionUID для этого класса на основе различных аспектов класса, как описано в Спецификации сериализации объектов Java (TM) . –

+1

Возможно, что Eclipse отключил это предупреждение. – Poindexter

Смежные вопросы