java8:@NotNull vs Assertion vs Throwing Exception

时间:2018-03-26 08:51:49

标签: java validation assertion notnull

防止开发人员使用我的私有方法需要一个notNull参数(注意我没有使用Spring框架)会更好吗?

  1. 使用@NotNull注释

    private void myBusinessMethod(@NotNull Object argument){
        //...
    }
    

    我必须选择哪个库? javax.validation.constraints.NotNull

  2. 使用断言

    private void myBusinessMethod(Object argument){
        assert argument != null ;
        //...
    }
    
  3. 抛出IllegalArgumentException

    private void myBusinessMethod(Object argument){
        if (argument == null){
            throw new IllegalArgumentException ("Argument can't be null") ? 
        }
        //...
    }
    
  4. 建议在以下链接中使用断言:http://www.javapractices.com/topic/TopicAction.do?Id=5

    你怎么看?

    谢谢

1 个答案:

答案 0 :(得分:1)

@NotNull只是一个注释,它本身没有任何作用。您可以使用Hibernate Validator库来提供和实现注释处理器,以强制实现@NotNull的含义。但通常情况下,将此注释(用于文档)与thorws IllegalArgumentException结合使用就足够了。 另外,@lexicore指出的资源(在评论中)应该有所帮助。