Regexp для компактных реализаций метода по умолчанию в Eclipse - PullRequest
2 голосов
/ 22 января 2010

Я использую Eclipse Galileo для разработки Java-кода. При реализации интерфейса для mocking, я часто хочу указать поведение нескольких методов и сохранить поведение по умолчанию (ничего не делать или возвращать null / 0) для большинства. Eclipse создаст красиво отформатированную реализацию по умолчанию, такую ​​как:

    HttpServletRequest mock = new HttpServletRequest() {

        public String getQueryString() {
            return "foobar";
        }

        public void setAttribute(String arg0, Object arg1) {
            // TODO Auto-generated method stub

        }

        public int getServerPort() {
            // TODO Auto-generated method stub
            return 0;
        }

        public String getServerName() {
            // TODO Auto-generated method stub
            return null;
        }

        ... etc, etc, etc ...           

Для легкости и чистоты я ищу регулярное выражение (для диалога поиска / замены в Eclipse), которое приведет к следующему результату при запуске в приведенном выше коде:

    HttpServletRequest mock = new HttpServletRequest() {

        public String getQueryString() {
            return "foobar";
        }

        public void setAttribute(String arg0, Object arg1) {}
        public int getServerPort() {return 0;}          
        public String getServerName() {return null;}

        ... etc...          

В основном:

  • удалить любой символ / новую строку / табуляцию между {и}

  • но сохраните и перепишите "return (. *);" если есть такая вещь (методы void не имеют оператора return)

Можно проверить каждую замену вручную и пропустить те, которые я хочу сохранить (не нужно полностью автоматизировать)

Ответы [ 2 ]

1 голос
/ 22 января 2010

Я придумал что-то вроде:

  • Найти шаблон: (public|private|protected)\s+(\w+)\s+(\w+)(\(.*\))\s+\{\s*(// TODO Auto-generated method stub)\s*(.*)\s*\}
  • Заменить шаблон: $1 $2 $3$4 { $6 }
0 голосов
/ 22 января 2010

Посмотрите, как это делается с помощью Adapters in swing, где адаптер является фиктивной реализацией данного интерфейса, а затем вы переопределяете только то, что вам нужно. Дает очень лаконичный код даже с анонимными классами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...