Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

Зачем в Java создавать самого себя из static main()?

#java


При решении оллимпиадных задач, и не только, люди часто в методе main создают объект
этого же класса, и запускают его уже нестатический метод run.
public class A {
    public static void main(String[] args) {
        new A().run();
    }

    private void run() {
        //code here
    }
}

Пример из acm.timus.org FAQ
Зачем так делать, если можно просто помечать все члены как static?    


Ответы

Ответ 1



Если реализовывать Runnable, то в предыдущих версиях Java это был единственный способ отхапать себе большой стек и сделать возможным, скажем, глубокую рекурсию. А так это банально удобнее -- везде писать static не только лениво, но и несимпатично. В том коде, что вы привели одна строчка кода и один лишний метод заменяет тысячи static'ов. Я лично, использую не один run, а методы init, solve, finish, где в init'е объявляю ввод и вывод, в finish'е делаю flush для output-потока, а в solve просто пишу решение задачи. Таким образом, с помощью шаблонов в вашей любимой IDE вы можете сделать удобный шаблон таким образом, что всю эту стандартную рутину(ввод-вывод) не писать тысячу раз, а IDE сама генерировала код, а вы только писали решение в solve. to Dex: кто мешает просто сделать метод run, для этого не обязательно реализовывать Runnable :)

Комментариев нет:

Отправить комментарий