java当两个不同的注释具有相同的名称时会发生什么?
我从未遇到过这种情况,现在我想知道:当/如果两个不同的注释具有相同的名称,会发生什么(我将在这里给出一个使用IntelliJ提供的注释的示例,但这个问题实际上是泛型的,所以我不会将其标记为“IntelliJ”)
例如,这里的第一句话:
http://youtrack.jetbrains.net/issue/IDEABKL-4959
说:
Many libraries have their own @NotNull annotations (intellij, hibernate-validation, ..).
如果我想同时使用IntelliJ的@NotNull
和Hibernate的@NotNull
,会发生什么(再次@NotNull只是我碰巧发现冲突的一个例子)
它们是不相容的吗?如果它们不兼容,是否适用于整个项目
这是我真的不熟悉的东西
# 1 楼答案
没有歧义,因为注释的包名将在导入中或注释本身上指定
JSR-305介绍了您的具体示例。它寻求一组标准的注释,并特别提到FindBugs和IntelliJ的空性注释
# 2 楼答案
对于同名的两个类/interafces/枚举/注释,问题是相同的。它们应该出现在不同的包中。如果它们在同一个包(例如,不同的版本)中,但在不同的jar/目录中,则选择在类路径中找到的第一个
# 3 楼答案
因为完整的包装是名称的一部分,所以它们不需要。这样做的效果是,您只能导入一个,并且必须引用具有完全限定名的任何其他名称。像这样
# 4 楼答案
这无关紧要,因为每个注释的完整限定名都不相同。您可以在
import
部分声明限定名称# 5 楼答案
在这种情况下,您需要指定完整的限定名,例如