Что ярлык к Автоматической генерации toString Метод в Eclipse?

Попробуйте это

$("tr.myRow td").on("input", "input[type='text']", function(){
    alert("CONTENT: " +     $(this).val());
});
28
задан Deepak Gupta 9 October 2015 в 06:34
поделиться

6 ответов

Eclipse 3.5.2 (и, возможно, более ранние версии) уже предоставляет эту функцию. Если вы щелкните правой кнопкой мыши в редакторе, вы найдете его в разделе «Источник» -> «Создать toString ()» ...

. Чтобы ответить на ваш вопрос о том, является ли автоматическое создание toString () плохой практикой, я считаю, что это не так. Если сгенерированный код очень похож на код, который вы написали бы сами, то зачем вообще его печатать?

43
ответ дан 28 November 2019 в 02:22
поделиться

В IntelliJ Idea вы можете нажать alt + insert, откроется всплывающее окно Generate; Теперь выберите поля и нажмите кнопку ОК; это все.

Generate Popup by pressing alt + insert

Select Fields and keep the default template as such

the generated to string function

Дополнительная подсказка: в диалоговом окне «Генерировать toString» вы можете выбрать шаблон, щелкнув раскрывающееся меню со списком шаблонов. Здесь вы можете выбрать StringBuffer, если вам нужно, или любой другой шаблон, как требуется. Играть с ним, чтобы привыкнуть. Мне нравится :)

2
ответ дан Rajesh Goel 28 November 2019 в 02:22
поделиться

Будьте внимательны при добавлении toString () в отношении аудитории сгенерированного текста. Некоторые платформы используют метод toString () для генерации видимого текста конечного пользователя (например, определенные веб-структуры), тогда как многие люди используют методы toString () для генерации информации отладки / разработчика. В любом случае, убедитесь, что у вас достаточно уникальности в реализации toString, чтобы удовлетворить ваши требования.

Реализация по умолчанию в JDK функции toString () генерирует информацию для разработчиков, поэтому обычно, по возможности, я рекомендую этот шаблон, но если вы работаете над проектом с другой идеей / ожиданием, вы можете запутаться ...

0
ответ дан Will Iverson 28 November 2019 в 02:22
поделиться

Лично мне нравится реализовывать метод toString для всех объектов, поскольку он помогает при отладке.

Я бы хотел изучить Apache Commons ToStringBuilder .

Вы можете реализовать простой метод toString с помощью отражения следующим образом:

public String toString() {
   return ToStringBuilder.reflectionToString(this);
}

Используя этот метод, вам не нужно будет обновлять метод toString, если / когда добавляются поля.

34
ответ дан 28 November 2019 в 02:22
поделиться

Чтобы добавить к ответам Стива и Дона (+1 для них):

Сделайте свой toString () метод прост, убедитесь, что он никогда не вызывает ожиданий (особенно помните о полях, которые могут быть нулевыми).

Если возможно, не вызывайте другие методы вашего класса. По крайней мере, убедитесь, что ваш метод toString () не изменяет ваш объект.

И помните о глупых исключительных циклах toString:

public class MyClass { 
       ... 
       public String toString() { 
          // BAD PRACTICE 1: this can throw NPE - just use field1
            return " field1=" + field1.toString() 
                + " extraData=" + getExtraData();
          // BAD PRACTICE 2: potential exception-toString loop
       }

       public MyExtraData getExtraData() {
           try { 
           .... do something
           } catch(Exception e) {
              throw new RuntimeException("error getting extradata - " + this.toString(),e);
           }

       }

}
5
ответ дан 28 November 2019 в 02:22
поделиться

Если вы используете ломбок , у них есть аннотация @ToString , которая сгенерирует для вас toString.

Причина, по которой это намного лучше использовать вместо генерации toString, например, с помощью eclipse, заключается в том, что если вы позже добавите, удалите или измените атрибуты класса, вам также придется регенерировать toString. Если вы используете ломбок , вам не нужно этого делать.

11
ответ дан 28 November 2019 в 02:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: