Должен ли я сделать класс констант для моих аннотаций? - PullRequest
3 голосов
/ 10 марта 2009

Что лучше?

  1. @SuppressWarnings("unchecked")
  2. @SuppressWarnings(AnnotationConstants.UNCHECKED)

Где AnnotationConstants - типичный класс констант ...

public final class AnnotationConstants {
    private AnnotationConstants() { }

    public static final String UNCHECKED = "unchecked";

    ...
}

Я знаю, что существует множество общих аргументов за и против классов констант - и это именно то, что меня не интересует. Я хочу знать, если класс констант конкретно для аннотаций - хорошая идея или плохая идея.

Ответы [ 4 ]

6 голосов
/ 10 марта 2009

Для этого конкретного примера я бы придерживался литералов. В конце концов, вы пытаетесь подавить предупреждения - если вы используете неправильный литерал, предупреждение не будет подавлено, что привлечет ваше внимание к проблеме.

3 голосов
/ 10 марта 2009

Я бы сказал немного о обоих, пожалуйста.

Весной вы могли бы сказать что-то вроде @Scope (Scopes.SESSION) или @Scope (Scopes.REQUEST), который придает аннотации особый тип поведения, поэтому я бы сказал, всегда use класс констант, который хорош для прослеживаемости.

Если вы просто подавляете предупреждения, маловероятно, что вы действительно захотите отследить это, так что просто следуйте буквальному.

2 голосов
/ 10 марта 2009

Я бы согласился с Holsam для SuppressWarnings - используйте строки

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

0 голосов
/ 10 марта 2009

За @SuppressWarning и тому подобное, я так не думаю. Я предпочитаю писать константы напрямую, и компилятор проверяет их, если это возможно. Затмение хорошо справляется с этим.

...