Nonnull注释和标准java包

时间:2011-04-18 12:23:31

标签: java annotations findbugs

1 个答案:

答案 0 :(得分:2)

根据文件,

带注释的元素不能为null。构造完成后,带注释的字段不能为空。带注释的方法必须具有非null的返回值。

@Documented
@Target(value={FIELD,METHOD,PARAMETER,LOCAL_VARIABLE})
@Retention(value=CLASS)
@Nonnull(when=ALWAYS)
@TypeQualifierNickname
public @interface NonNull

或者您可以在类或包上使用@DefaultAnnotation(NonNull.class),然后仅对要允许为null的那些参数,方法或字段使用@Nullable。

分析是在源头完成的。

所以试试这个,它对我有用

/**
 * @param args
 */
public static void main(String[] args) {
    method( getValue());
}

private static void method(@NonNull Object obj){
    System.out.println(obj);
}

@CheckForNull
private static Object getValue(){
    Map map = new HashMap();
    return map.get("foo");
}

或者您可以使用http://c4j.sourceforge.net/

尝试按合同设计