📜  重复类 org.intellij.lang.annotations. - Java (1)

📅  最后修改于: 2023-12-03 14:58:11.275000             🧑  作者: Mango

重复类 org.intellij.lang.annotations. - Java

在 Java 中,有一些常用的注解,如 @Deprecated、@Override 等。而 org.intellij.lang.annotations. 包中的注解就是对这些常用注解的扩展和增强。

常用注解
@Language

用于标注某个字符串的语言类型,方便 IDE 和工具进行语法高亮、代码检查等操作。示例代码:

@Language("json")
public String toJson() {
    // some code
}
@Nullable 和 @NotNull

用于标注方法的返回值、方法的参数注入等,表明这个方法可能会返回 null 或不会返回 null。IDE 和工具可以针对这些注解进行检查,防止空指针异常的出现。示例代码:

public void printName(@Nullable String name) {
    if (name != null) {
        System.out.println("Name: " + name);
    }
}
@NotNull
public String getDefaultName() {
    return "Default";
}
@Contract

用于标注方法的契约条件,即输入和输出之间的关系。可以方便地进行代码检查,避免出现异常情况。示例代码:

@Contract(pure = true)
public int getLength() {
    return this.length;
}
扩展注解

除了常用注解之外,org.intellij.lang.annotations. 还提供了一些扩展注解,用于更深入地描述类、方法和参数的信息。

@MagicConstant

用于标注一个属性或方法参数的取值范围,方便 IDE 进行代码检查和自动提示。示例代码:

public void setDirection(@NotNull @MagicConstant(valuesFromClass = Direction.class) String direction) {
    // some code
}
@LanguageQualifier

用于标注某个方法的返回值的语言类型,是 @Language 注解的升级版。示例代码:

public @LanguageQualifier("XML") String getXmlContent() {
    // some code
}
@MatchingRegExp

用于标注某个方法的参数必须满足某个正则表达式,方便进行代码检查。示例代码:

public void search(@NotNull @MatchingRegExp("[a-zA-Z]+") String keyword) {
    // some code
}
总结

org.intellij.lang.annotations. 包中的注解可以帮助程序员更准确地描述代码逻辑,方便 IDE 和工具进行代码检查和操作。熟练运用这些注解,可以提高代码的可读性和可维护性。