SwingWorker: недопустимый запуск типа - PullRequest
0 голосов
/ 10 февраля 2012

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

   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>()

выдает ошибку: недопустимый запуск типа ... Я думаю, что моя проблема была из-за "вектора", но я не знаю, как решить .. Любая помощь?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

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

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

2 голосов
/ 10 февраля 2012

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

...