Java断言语句用法,考试认证1Z0-851
我正在学习1Z0-851 Oracla Java SE 1.6认证,我看到了这个问题:Java断言语句用法,考试认证1Z0-851,java,Java,我正在学习1Z0-851 Oracla Java SE 1.6认证,我看到了这个问题: 我将第一个备选方案标记为正确的,但失败了!“所有的断言语句都被恰当地使用了”,答案是第一个assert(x>0)不正确。。问题是为什么?如果只阅读第一条assert语句——由于它的位置,应该将其解释为“先决条件”——它意味着函数应该与任何正int值一起正常工作,这是不正确的。因此,该断言是误导性的。第12行是多余的 如果删除它,第15行上的断言将涵盖以下情况:从go2开始的x,很容易理解断言。 该方法不起任
我将第一个备选方案标记为正确的,但失败了!“所有的断言语句都被恰当地使用了”,答案是第一个
assert(x>0)代码>不正确。。问题是为什么?如果只阅读第一条assert语句——由于它的位置,应该将其解释为“先决条件”——它意味着函数应该与任何正int值一起正常工作,这是不正确的。因此,该断言是误导性的。第12行是多余的
如果删除它,第15行上的断言将涵盖以下情况:从go2
开始的x,很容易理解断言。
该方法不起任何作用,它只是断言您的期望,即x<0
另一方面,go
方法有一个开关
在default
子句上断言false
是一种良好的做法,如果绝对不希望您的程序属于此子句,即在正常情况下,案例之一必须是正确的
开关
上的唯一一种情况要求x
精确地2
因此,总而言之,您并不期望x
大于0
,正如第一个断言所说,您期望x
为2
,除此之外什么都没有。因此,断言没有被适当地使用
但是,如前所述,案例
没有中断
,这意味着将始终执行默认
,在每个场景中导致断言false
结论:使用go
方法总会导致错误,使assert false
正确使用,而assert x>0
根本不正确。正确答案是
断言的适当和不适当使用
您可以将断言放置在您不希望正常访问的任何位置。
断言可用于验证传递给私有方法的参数。然而,
断言不应用于验证传递给公共方法的参数,因为
公共方法必须检查其参数,无论是否启用断言
不但是,您可以使用公共和非公共的断言测试后置条件
方法。此外,断言不应以任何方式改变程序的状态
Src:术语“适当使用”非常主观,因此存在混淆。他们应该澄清这个问题。同时看看这一点,如果他们使用的代码示例即使是很有意义的,也会很有帮助。除了案例2
没有相应的中断
,这意味着断言false
也会失败。发现得很好。当我第一次读到它时,我自动假定中断
。我也是。这就是为什么我必须删除我自己的答案。好地方,我也错过了。不管怎么说,我的回答几乎站得住脚,但这个问题似乎确实存在nonsensical@Jeff已编辑,根据您的评论。该函数不适用于任何x值。要么它是一个负数,第一次失败,要么它assert false
s.+1 Nice,我不知道。虽然我个人只在单元测试中使用断言。。!