Страницы

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

пятница, 14 декабря 2018 г.

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

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


Ответ

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

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

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