Qual anotação Java @NonNull usar
O que émelhor Anotação 'NonNull'?
"Melhor" no sentido de
Caminho padrão, p. prova futura (por exemplo, suporte por jdk padrão etc.)Suporte de IDE (aparece em java doc para indicar o uso para desenvolvedores)Suporte por ferramentas de análise estática, como findbugsSuporte para análise de tempo de execuçãoAqui está como o mundo se parece atualmente - qualquer outro insight é apreciado:
javax.validation.constraints.NotNull
(Documentos)
Portanto, o pacote javax parece à prova de futuro
- Parte do JEEnão JSE. No JSE precisaimportar bibliotecas adicionais.
- Não suportado por ferramentas de análise estática (apenas validação de tempo de execução)
edu.umd.cs.findbugs.annotations.NonNull
(docs)
- biblioteca externa e não umajavax
pacote
- descontinuada desde o findbugs versão 3.X
+ usado para análise estática (por findbugs e, portanto, Sonar)
javax.annotation.Nonnull
(docs)
+ usado para análise estática (em findbugs)
- JSR-305 está adormecido / morto / desconhecido como nolista de discussão fb indicado. O autor Bill Pugh, mesmo se perguntado diretamente, não comenta o estado há anos ...
org.eclipse.jdt.annotation_2.0.0
(docsinteressanteapresentação)
+ usado para análise estática (embora no eclipse não no findbugs)
- proprietário do eclipse (não tentou usá-los autônomo)
org.jetbrains.annotations.NotNull
(docs)
+ usado para análise estática (no intelecto, mas não nos findbugs)
- proprietário do IntelliJ (mas também disponível publicamente como jar)
lombok.NonNull
(docs)
+ usado para controlar a geração de código
- anotação proprietária
android.support.annotation.NonNull
(docs)
+ análise estática no android studio
- anotação proprietária específica do Android
org.checkerframework.checker.nullness.qual.NonNull
(docs)
+ JSR308 implementação que faz parte do Java8 (que introduziu a capacidade de escrever anotações em diferentes partes do seu código, mas não introduziu novas anotações)
+ usado para código estático (embora não seja encontrado)e análise de tempo de execução
- lib externa, no entanto, parece serendossado pelo pessoal do java
Atualmente, eu tenderia aoChecker Framework mas estou ansioso por outros pontos de vista ...
[aviso Legal] Eu sei que a pergunta foi feita aqui, mas não foi respondida (ou a resposta estava errada / incompleta / desatualizada)[/aviso Legal]