toString()
オーバーライド可能なので、より見やすい形に成形された文字列が返ってくる可能性がある。
name()
final で宣言されているためオーバーライド不可であり、Enum で宣言されたそのままの文字列を取得することが出来る。
状況に依りけり
公式 (Java 8 Enum JavaDoc) によれば、 name()
が(宣言部分を書き換えない限り)常に同じ文字列を返すことを利用したプログラムのような特殊な場合でのみ利用を推奨し、それ以外の場合は toString()
の利用を推奨、ということらしい。
大抵の場合、Enum には何かしらの値が設定されているだろうからそれを取得しようとする場合は toString をオーバーライドして実装するのが一番手っ取り早く、そのように用途に合わせた小回りを利かせられることから「ユーザーフレンドリ」と言われているのだろう。
ほとんどのプログラマは、このメソッドよりもtoString()メソッドを使用するようにしてください。これは、toStringメソッドの方がユーザーフレンドリな名前を返すことができるからです。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Enum.html#name--