Получение ошибки компиляции из примера использования ScheduledExecutorService - PullRequest
0 голосов
/ 13 января 2019

Я только что импортировал и начал использовать ScheduledExecutorService в своей программе, и я получаю сообщение об ошибке компиляции с примером использования из их документации:

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
    private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

    public void beepForAnHour() {
        final Runnable beeper = new Runnable() {
             public void run() { System.out.println("beep"); }
        };

        final ScheduledFuture<?> beeperHandle = scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);

        scheduler.schedule(new Runnable() {
            public void run() { beeperHandle.cancel(true); }
        }, 60 * 60, SECONDS);
    }
}

Я занимаюсь разработкой в ​​Android Studio (версия 3.2.4). Я также пытался заставить свой проект использовать Java версии 1.8, но это ничего не сделало. (В проекте обычно используется Java 1.7)

Ошибка следующая:

ошибка: метод execute в классе ThreadPoolExecutor не может быть применен к данным типам;

требуется: Runnable

найдено: без аргументов

причина: фактические и формальные списки аргументов различаются по длине

Я не использую ThreadPoolExecutor, и, насколько я могу судить, в приведенном выше примере корректно вызывается все методы ScheduledExecutorService с правильным количеством аргументов.

Update Я протестировал один только пример кода в его собственном файле и попытался скомпилировать его в терминале, и он отлично компилируется. Так что это означает, что что-то не так с моим окружающим кодом или средой. Я рассмотрю его подробнее и дополню этот вопрос более подробной информацией по мере нахождения.

1 Ответ

0 голосов
/ 14 января 2019

Кажется, эта глупая ошибка произошла только из-за моих собственных ошибок. Я, должно быть, некоторое время не создавал свое приложение, создавая новые классы и создавая новые архитектуры.

По этой причине у меня действительно был класс, реализующий ThreadPoolExecutor, однако я уже исключил этот класс для других библиотек и совершенно забыл об этом!

Мораль истории

отслеживайте ваши идеи и правильно комментируйте их, если вы ими не пользуетесь. Затем не забудьте удалить их, как только вы закончите разработку этой функции!

...