После прочтения документации String java.lang.Enum.name()
я не уверен, что я понимаю, когда следует использовать name() и когда использовать toString().
Возвращает имя этой константы перечисления, точно так же, как указано в объявлении перечисления. Большинство программистов должны использовать метод toString, предпочитая это, так как метод toString может возвращать более удобное имя. Этот метод предназначен в первую очередь для использования в специализированных ситуациях, где правильность зависит от получения точного имени, которое не будет отличаться от выпуска к выпуску.
В частности, хотя в документации говорится, что предпочитает toString()
, собственный StandardLocation Java использует name
, когда я буду иметь подумал, что в документации указано иное.
public String getName() { return name(); }
Кроме того, Enum
реализует toString()
как,
public String toString() {
return name;
}
и я не могу представить себе ситуацию, когда пользовательское перечисление переписывает toString()
, поэтому name()
и toString()
почти всегда одинаковы.
- Не могли бы вы объяснить, почему игнорирование документации и использование
name()
- плохая идея? - Как насчет фразы "не будет отличаться от выпуска к выпуску". Если имя не изменится, означает ли это, что
java.lang.Enum.toString()
будет?