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

Рейтинг: 4Ответов: 1Опубликовано: 05.07.2011

При решении оллимпиадных задач, и не только, люди часто в методе main создают объект этого же класса, и запускают его уже нестатический метод run.

public class A {
    public static void main(String[] args) {
        new A().run();
    }

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

Пример из acm.timus.org FAQ

Зачем так делать, если можно просто помечать все члены как static?

Ответы

▲ 10Принят

Если реализовывать Runnable, то в предыдущих версиях Java это был единственный способ отхапать себе большой стек и сделать возможным, скажем, глубокую рекурсию.

А так это банально удобнее -- везде писать static не только лениво, но и несимпатично. В том коде, что вы привели одна строчка кода и один лишний метод заменяет тысячи static'ов.

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

to Dex: кто мешает просто сделать метод run, для этого не обязательно реализовывать Runnable :)