当两个不同的注释具有相同的名称时会发生什么?

Gug*_*see 5 java annotations

我从未遇到过这种情况,现在我想知道:当/如果两个不同的注释具有相同的名称时会发生什么? (我将在这里使用IntelliJ提供的注释给出一个例子,但这个问题非常通用,所以我没有标记它'IntelliJ')

例如这里的第一句话:

http://youtrack.jetbrains.net/issue/IDEABKL-4959

说:

许多库都有自己的@NotNull注释(intellij,hibernate-validation,..).

如果我想使用IntelliJ @NotNull和Hibernate ,会发生什么@NotNull(再次@NotNull只是我碰巧发现冲突的一个例子)

它们不兼容吗?如果它们不兼容,是否适用于整个项目?

这是我真的不熟悉的......

And*_*mas 8

没有歧义,因为注释的包名称将在导入或注释本身中指定.

JSR-305解决了您的具体示例.它寻求一组标准的注释,并特指FindBugs和IntelliJ的可空性注释.

Nullness注释(例如,@ NonNull和@CheckForNull).FindBugs和IntelliJ都支持他​​们自己的nullness注释版本.


Lan*_*dei 7

在这种情况下,您需要指定完整的限定名称,例如

@bar.baz.Foo 
@org.fubar.Foo
void myMethod() {...}
Run Code Online (Sandbox Code Playgroud)