Каковы лучшие практики для инициализации повторяющейся задачи снова и снова - PullRequest
1 голос
/ 20 марта 2012

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

Я создал программу, которая использует один объект для повторения задачи, котораячитает из листа Excel снова и снова и извлекает данные оттуда.

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

Воткод потока, который я использую, чтобы обновить графический интерфейс (и чтение из файла снова и снова).Как вы можете видеть, он вызывает некоторые методы из другого класса.Когда эти методы вызываются - локальные переменные и индексированный массив уже содержат некоторые данные из предыдущей итерации:

    public void check() {
        Thread check = new Thread() {
            public void run() {
                for (;;) {
                    EventQueue.invokeLater(new Runnable() {
                        public void run() {
                            // Update GUI here on EventQueue.

                            try {
                                Task.readTasks();
                            } catch (InvalidFormatException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        label.setText("Next Task Is: " + Task.printNextTask);
                        }
                    });

                    try {
                        Thread.sleep(5000);
                    } catch (InterruptedException ie) {
                        break;
                    }
                    if (killcheck)
                        break;

                }
            }
        };
        check.start();
    }

    public void stopChecking() {
        killcheck = true;
    }
}

Ответы [ 2 ]

1 голос
/ 20 марта 2012

В зависимости от того, какое использование вы используете для вашего массива, вы должны взглянуть на следующие классы: http://docs.oracle.com/javase/6/docs/api/index.html?java/util/ArrayList.html

http://docs.oracle.com/javase/6/docs/api/java/util/Vector.html

http://docs.oracle.com/javase/6/docs/api/java/util/LinkedList.html

Массив «старого стиля» обычно не рекомендуется в Java, если только вам не нужен массив типов примитивов (int, double, char и т. д.)

1 голос
/ 20 марта 2012

Ваш вопрос очень общий, поэтому я боюсь, что мой ответ также довольно общий.Чтобы избежать ArrayIndexOutOfBoundsExceptions, используйте краткий синтаксис for-each для массивов и Iterable объектов.

Возможно, вы также найдете этот ответ к вопросу о рабочих очередях полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...