jetbrains annotations 库 优雅的书写纯函数

  • 通过该注解可以让你写代码的时候 更优雅的表明函数的语意
  • 官方文档
  • 这是一个注释库,对于写注释而言,有些时候书写表达式能表现的更为精简 通用,并且更富有语意性!

@Nls @NonNls

 @Nls Integer code = -500; //批注指示带批注的代码元素是需要本地化的字符串
 @NonNls Integer code = -500; //批注指示带批注的代码元素是用户不可见的字符串,它不需要本地化,并且不包含需要本地化的字符串。使用 对元素进行批注时,本地化工具将跳过此元素及其中的字符串。

@PropertyKey

  • 注释指示方法参数接受必须是特定资源包中的有效属性键的参数。当不是捆绑包中属性键的字符串文本作为参数传递时,IntelliJ IDEA 会将其突出显示为错误。批注还用于在作为参数传递的字符串文本中提供完成。

@TestOnly

    @TestOnly
    public  void test(){
        System.out.println("i am test fun");
    }

@Contract

  • 该注解用于约束入参和出参,下图示例代表了入参必须为非null 并且出参也不能为null
@Contract(value = "!null -> !null", pure = false)
public static String top(String param) throws Exception {
    unsafe();
    if (Objects.equals("a", param)) return "b";
    else {
        throw new Exception("");
    }
}

@ParametersAreNonnullByDefault

  • 声明一个方法是有默认值的
    image-1659593811755
  • 在这种情况下ide 认为判断null 是没有意义的
  • 并且如果调用时传递了null idea 会发出警告
    image-1659593884674