SwingWorker, вызывающий ошибки в подклассах - PullRequest
1 голос
/ 03 апреля 2012

У меня есть класс (назовите его основным классом), а метод в основном классе вызывает методы других классов. Я расширил этот основной класс во всех других классах, как это

      public class Evaluate extends Main

В моем основном классе я использую Swingworker, поэтому я написал код, подобный этому

      class Main extends SwingWorker<Void, Void>{
        public Main(GUI frame) {
        p = frame;

        }
        //some more code 

Теперь, когда я собираю эту программу, она выдает мне следующую ошибку

        error: constructor Main in class Main cannot be applied to given types;
        public class Evaluate extends Main {
        required: GUI
        found: no arguments
        reason: actual and formal argument lists differ in length

Здесь GUI содержит основной метод, с которого запускается мое приложение. Пожалуйста, помогите мне, почему эта ошибка происходит.

1 Ответ

2 голосов
/ 03 апреля 2012

Когда вы расширяете класс, вы должны вызывать конструктор основного класса в вашем собственном конструкторе (используя super). Так что в этом случае ваш Evaluate класс должен выглядеть как

public class Evaluate extends Main {

  public Evaluate( GUI frame ){
    super( frame );
  }
  // or another constructor
  public Evaluate( ){
    super( retrieveAFrameFromSomeWhere );
  }
  public Evaluate( loads of other arguments, GUI frame ){
    super( frame );
    //do something with the other arguments
  }
}

Ознакомьтесь с превосходным Java-учебником для получения дополнительной информации и, конечно, раздела о Конструкторах подкласса

...