При решении оллимпиадных задач, и не только, люди часто в методе 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 :)
Комментариев нет:
Отправить комментарий