Что не так с моим загрузчиком классов? ClassCastException при преобразовании в один и тот же класс!

Перед тем, как кто-нибудь закроет, это копия этого , пожалуйста, подождите, это немного другое :-)

У меня есть класс A, который используется в SwingWorker. Итак, программа выглядит примерно так:

class Task extends SwingWorker {
      public Task(ClassLoader loader) {
          Thread.currentThread().setContextClassLoader(loader);
      }
      public List doInBackground() {
          A obj = new A();
          //do some stuff with A;
          return list of A;
      }
}

И мой метод, который вызывает эту задачу, выглядит так:

public void someMethod() throws Exception {
      Task task = new Task(Thread.getCurrentThread().getContextClassLoader():
      //do something and wait for output
      List result = task.get();
      for(A obj : result) {
         //do something
      }
}

Теперь я сделал java -verbose: class, чтобы увидеть, как этот класс загружается. Я вижу, что A загружается только один раз при выполнении метода doInBackground (). Но как только управление возвращается к someMethod (), итерация цикла for по списку вызывает исключение ClassCastException !! Это выглядит следующим образом:

Исключение в потоке «AWT-EventQueue-0» java.lang.ClassCastException: [Lcom.model.A; не может быть преобразован в com.model.A]

Понятия не имею, почему это не работает. Я пробовал использовать Class.forName () и предварительно загрузить класс A в someMethod () перед вызовом SwingWorker, при этом, не передавая экземпляр загрузчика классов, тот же класс загружался дважды !! После отправки загрузчика классов в качестве параметра класс загружается только один раз, но отказывается выполнять приведение !!

Нужна помощь! : (

0
задан Community 23 May 2017 в 10:28
поделиться