Проблема форматирования в Eclipse - PullRequest
0 голосов
/ 14 мая 2010

У меня есть метод в Eclipse, как показано ниже.

public String toString() {
  return "HouseVo [ "
  + "Name  :  " + this.name == null ? "" : this.name
  + "Address  :  " + this.address == null ? "" : this.address;
}

Когда я форматирую это становится:

return "HouseVo [ " + "Name  :  " + this.name == null ? ""
        : this.name + "Address  :  " + this.address == null ? ""
               : this.address;

Любой способ исправить это, чтобы он правильно форматировал?

Ответы [ 7 ]

6 голосов
/ 14 мая 2010

Тернарный оператор имеет очень низкий приоритет. Тот факт, что Eclipse реструктурирует ваш код, является намеком на то, что он делает не то, что вы думаете. Попробуйте это:

public String toString() {
  return "HouseVo [ "
  + "Name  :  " + (this.name == null ? "" : this.name)
  + "Address  :  " + (this.address == null ? "" : this.address)
}
3 голосов
/ 14 мая 2010

Не существует абсолютно правильного способа автоматического форматирования кода, которому следует Eclipse.

Тем не менее, вместо этого я бы реорганизовал код в нечто вроде этого:

static String emptyIfNull(String s) {
   return (s == null) ? "" : s;
}

public String toString() {
  return String.format(
     "HouseVo [ Name  :  %sAddress  :  %s",
     emptyIfNull(this.name),
     emptyIfNull(this.address)
  );
}

При этом используется String.format и становится очевидным, что в настоящее время ваш формат toString() не имеет закрывающего ], а поле Address немедленно следует за значением Name любой разделитель между ними.

Использование строки форматирования упрощает, скажем, что-то вроде этого:

     "HouseVo [ Name: %s, Address: %s ]"

Таким образом, код не только более читабелен, но и прост в обслуживании.

Смотри также

Смежный вопрос

1 голос
/ 05 июня 2010

Вы можете создать один XML-файл, в котором вы можете указать, как вы хотите отформатировать код, а затем добавить этот XML-файл, используя предпочтения-Java - Стиль кода - Форматтер, и вставить в него этот XML-файл.

Вот пример кода для записи этого XML-файла

1 голос
/ 14 мая 2010

Вы можете попробовать настроить форматер в настройках Eclipse ( Java> Кодовый стиль> Форматер ) и отредактировать профили.

Там есть много опций, касающихся отступов, фигурных скобок, новых строк, переноса строк, пробелов, операторов управления и т. Д.

Не уверен, что вы можете исправить это точное форматирование, но в разделе переноса строк вы можете внести изменения для опции Выражения> Условные выражения . Посмотрите, подходит ли какой-то стиль тому, что вам нужно.

0 голосов
/ 15 мая 2010

Помещение скобок может помочь. Попробуйте это:

public String toString() { 
   return "HouseVo [ " 
          + ("Name  :  " + this.name == null ? "" : this.name)
          + ("Address  :  " + this.address == null ? "" : this.address)
          + "]"; 
} 
0 голосов
/ 14 мая 2010

Использование // s:

public String toString() {
  return "HouseVo [ " //
  + "Name  :  " + this.name == null ? "" : this.name //
  + "Address  :  " + this.address == null ? "" : this.address;
}

В этом конкретном случае я бы извлек результат каждого оператора?: - в локальную переменную, а затем в конце конкатанировал их. Облегчает чтение.

0 голосов
/ 14 мая 2010

Когда вы используете средство форматирования, данное в eclipse, оно будет форматироваться только так.

Лучше разделить конкатенацию строк, если вам требуется более читаемый формат, как показано ниже.

java.lang.StringBuffer sb = new java.lang.StringBuffer("HouseVo [ ");
sb.append("Name  :  " + (this.name == null ? "" : this.name));
sb.append("Address  :  " + (this.address == null ? "" : this.address));
return sb.toString();
...