C# 合约与 NotNull/roll in Java 中自己的合约



我想减少 Java 中的冗余和冗长的空检查,但我知道 Java 没有标准的@NotNull注释,因为 c# 具有可以使用的合约,例如

Contract.Requires( x != null );

我可能错过了一些东西,但我不能自己编码吗?

public class Contract {
    public static void requireNotNull(Object object) {
        if ( object == null )
           throw new IllegalArgumentException("Contract forbids null");
    }
}

这是否缺少@NotNull或合同的任何好处?

代码契约,而不是你用Java编写的,可以静态分析,如果违反,会给出构建错误。您编写的 Java 代码只会给出运行时错误。

例如,如果将方法上的参数标记为 Not Null,然后尝试在不执行 null 检查的情况下在更高的层调用它,则会收到错误。这不是编译时错误,因为代码协定是静态分析器的一部分,因此,如果您在 Visual Studio 或实现代码协定静态分析器的其他产品之外进行编译,则不会捕获它。

有关更多详细信息,请参阅此文档。

相关内容

  • 没有找到相关文章

最新更新