Честно говоря, это вопрос предпочтений, но я предпочитаю простой вариант String.
Единственное преимущество использования параметра getSimpleName()
заключается в том, что он поддерживает рефакторинг.Так что это полезно только в том случае, если вы меняете имя класса (что случается редко) или если вы копируете / вставляете файл для использования в качестве шаблона.
Так что, если вы делаете это часто, я понимаю, почему вы предпочитаете первый вариант.Это просто облегчает необходимость не менять вручную TAG.
Первоначально я также использовал getSimpleName()
для тегов до недавнего времени, когда у меня возникла небольшая проблема.
При использовании архитектуры MVVM на самом деле существует только одна ViewModel для View, поэтому я создал ViewModelFactory, которая создает и возвращает правильный ViewModel для View.Поскольку он должен быть уникальным, я решил использовать TAG в качестве идентификатора нужной мне ViewModel.
Поэтому, с помощью простого оператора Switch-case на TAG, я смогу получить правильную ViewModel.Однако вы просто не можете использовать TAG в качестве выражения регистра, когда используете getSimpleName()
.Я получил ошибку: Constant Expression Required
.
Так что, если вы планируете использовать свой TAG только для определенных ситуаций, таких как Logcat, вам будет достаточно просто использовать getSimpleName()
.Но если вы планируете использовать их в качестве уникального идентификатора класса для определенной группы классов, вам понадобится опция String.