我想检查基类上的前提条件,以便知道子类型将始终使用有效的构造函数参数。
让我们以一个构造器为例:
在这种情况下,如何最好地使用番石榴前提条件方法?
在这样的模拟示例中:(这是人为的!)
protected AbstractException(String errorMessage, Throwable errorCause) {
super(errorMessage, errorCause);
checkNotNull(errorMessage,
ErrorMessage.MethodArgument.CANNOT_BE_NULL_CHECK, "errorMessage");
checkArgument(!errorMessage.isEmpty(),
ErrorMessage.MethodArgument.CANNOT_BE_EMPTY_STRING_CHECK,
"errorMessage");
checkNotNull(errorCause, ErrorMessage.MethodArgument.CANNOT_BE_NULL_CHECK,
"errorCause");
}
我最终super
在检查参数之前先进行了调用,因为对to的调用必须super
是方法的第一行,尽管可以这样做super(checkNoNull(errorMessage))
,但是我不能使用相同的包装方法,checkArgument
因为那会返回void
。因此,难题是:
checkStringNotNullAndNotEmpty()
我使用外观怪异的ErrorMessage.MethodArgument.CANNOT_BE_NULL_CHECK,因为默认值throw
不包含错误消息,因此从测试方面,我无法将其识别为参数验证失败,而不是“任何”
NPE?
我做错了吗?
这本来应该是一个评论,但是太长了。
super
如果超级控制器不会做 它不应该 做的事情, 那么 在测试前打电话是无害的。更重要的是:您抛出的异常可能不如没有所有检查的异常。假设用户提供了一个原因并且没有消息。您认为这很糟糕,但是您可以使用没有任何原因的NPE替换它。更糟
看番石榴Preconditions.format
(私人包装)。他们可以先检查正确数量的参数,但不能。您可以提供太少或太多,这是一个错误,但忽略它是处理它的最佳方法。
问题内容: 刚刚发现了Guava库项目。 这些与GWT兼容吗? 问题答案: 从该页面的介绍性PDF中, 您可以在…上使用这些库。 在JDK 6上 在Android上, 我们认为。需要志愿者来帮助我们进行测试。 在Google App Engine上, 我们认为。需要志愿者来帮助我们进行测试。 在GWT上-参差不齐! 由于GWT的JDK库支持 可能参差不齐,也许是2/3,所以到目前为止,这些库中的东
问题内容: 我想知道哪个更有效,为什么? 1) 要么 2) 问题答案: 我看不出您为什么要在此处使用builder的任何原因: 比在这种情况下制作一个更具可读性, 不会推断通用类型,并且在用作单行代码时必须自己指定类型, (来自docs) 在与另一个不可变集合调用时 做得很好( 尝试避免在安全的情况下实际复制数据 ), (从源) 调用以前创建的,同时避免为零元素和一元素集合创建任何列表(分别返回空
我想为番石榴设个坑(http://pitest.org/)进行突变熟练度测试,但我在尝试运行时出现以下错误。这是我得到的错误: 基本上,要么PIT没有检测到测试,要么测试在PIT中运行不正常,所有测试都失败了。我读了这篇文章:JUnit测试通过,但PIT说套件不是绿色的,我认为“您的代码库是否包含可变静态状态?(例如在单例中)”是问题所在,但我不知道如何修复它。如果测试套件有一些隐藏的顺序依赖关系
我的 Spark 版本是 2.2.0,它在本地工作,但在具有相同版本的 EMR 上,它给出了以下异常。
问题内容: 我正在寻找在Maven存储库中的番石榴库。番石榴似乎正在向Google收藏库添加更多功能。 问题答案: 从r03开始,可以在中央Maven存储库中找到Guava版本。 您可以通过将以下依赖项添加到POM中来包括Guava: 注意:以上版本号在您阅读时可能已过时。 要了解最新的可用版本,您可以在这里查看 版本于2017年10月19日更新。
问题内容: 我在commons- lang中使用了简单的DTO。现在,我尝试使用Google Guava代替Apache Commons库。我在番石榴找到了。但是如果班上有很多成员,这太冗长了。例如: 如果我使用commons-lang,则简单得多: 有什么更好的方法可以用Guava而不是commons-lang 来实现? 番石榴文件 问题答案: 我有番石榴的小招。我将 IntelliJ IDEA