2012-02-10 5 views
0

это кусок кода, который вызвал мою проблему:SwingWorker: незаконное начало типа

SwingWorker <Vector,void> sw=new SwingWorker <Vector,void>(){ 

    @Override 
     protected Vector doInBackground() throws Exception { 

      TvaJpaController tjc =new TvaJpaController(emf); 
      Vector l_tva=null; 

      try{ 
     l_tva= (Vector) tjc.findTvaEntities(); 

      } 
     catch(javax.persistence.PersistenceException e) 
      { 

      javax.swing.JOptionPane.showMessageDialog(null,"please check your internet connecting"); 

      } 
     return l_tva; 
    } 

    @Override 
     protected void done() { 
    Vector l_tva=null; 
      try { 
        l_tva=get(); 
      } catch (InterruptedException ex) { 
       Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex); 
      } catch (ExecutionException ex) { 
       Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex); 
      } 

     int n = l_tva.size(); 
      for(int i=0;i<n;i++){ 
     Tva tva =(Tva)l_tva.elementAt(i); 
    tva_article.addItem(tva.getIdtva()); 

    } 

    } 
    }; 

    sw.execute(); 

этой линии:

SwingWorker <Vector,void> sw=new SwingWorker <Vector,void>() 

выдает ошибку: незаконное начало типа ... I думаю, моя проблема была вызвана «вектором», но я не знаю, как решить .. Любые помогает?

ответ

3

Нет, проблема заключается в использовании void, что не является допустимым аргументом типа. Вы можете использовать SwingWorker<Vector, Void>. (Обратите внимание на разницу между void, которое является ключевым словом Java и Void, который относится к типу java.lang.Void.)

Лично я предложил бы использовать List<E> в предпочтении явно используя Vector, и использовать его в общем, если это возможно, с ArrayList<E> как реализация, а не Vector, но это отдельный вопрос - это всего лишь void/Void, что вызывает у вас проблемы.

+0

Взгляните: http://en.wikipedia.org/wiki/SwingWorker –

+1

@MarwenTrabelsi: Как насчет этого? Я использую «Void», а не «пустоту». –

+0

excelent catch +1 – mKorbel

2

и второй вопрос в том, что о неправильном использовании метода get() в SwingWorker-х void done(), потому что возвращается только исключение из SwingWorker (и только если исключение существует), больше об использовании метода get() в моем question

+0

Спасибо, я посмотрю .. –

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