我从来没有理解assert用过的东西,尽管我已经阅读了很多例子,但他们并没有真正让我知道我应该使用它的原因或原因.
所以,不要问一个例子,我会提供一个,让我知道这是否正确使用assert.
// The idea is that the `mode` variable should be 0 or 1, and no other number.
switch(mode) {
case 0:
// do stuff
break;
case 1:
// do other stuff
break;
default:
// assert code?
}
Run Code Online (Sandbox Code Playgroud)
如果这是正确的,请告诉我如何在这种情况下使用它.如果这不是它应该如何使用,请提供一个例子.
我何时应该使用Apache Commons的Validate.isTrue,何时应该使用'assert'关键字?
StackOverflow上有几个问题讨论了何时应该使用assert语句而不是抛出一些异常的问题.(这里,这里,这里,这里和这里的例子.
但是,我开始怀疑assert-versus-throw的传统智慧是基于您在JVM中运行的假设.在GWT Universe中,您的Java被音译为JavaScript并在浏览器的上下文中运行,这一组权衡感觉不同:在浏览器中运行时,断言总是被编译掉,并且任何使JavaScript的大小变小的东西是一个胜利,特别是如果你的网络应用程序必须在手机上运行.断言确实可以在DevMode中运行,因此它们在开发过程中具有实用性.
所以我的问题是:有没有人考虑过一套最佳实践规则来管理如何在GWT中使用断言语句?我有我的团队成员问我"因为断言被编译出来,有它们是否有意义?",我想对他们有一个好的答案.
此外,是否有人对Google的GWT开发人员在此主题上的理念有所了解?查看GWT源代码,他们似乎经常使用它.
我是java中的断言概念的新手.我在哪里读过关于java中的断言概念,总是说,如果我们使用assert expression1:expression2,它将使用默认构造函数或AssertionError类中的七个构造函数之一,以防它失败. 但我怀疑的是,当assert语句失败时,谁实际上抛出了这个AssertionError错误?编译器是否会添加" throw new AssertionError(---) ",否则JVM将检查表达式并抛出AssertionError(如ArithmeticException,NullPointerException等...)?
有没有办法在一个方法中断言输入String有一定的长度?
我试过断言,stringName[4];但似乎不起作用
我想测试下面的java程序.
package com.arrays;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Find all pairs in an array of non-negative unique numbers whose sum is equal to k
* For Example. {1,3,4,5,6} and k=9, then {3,6} and {4,5}
*
*/
public class FindAllPairsIfSumToK {
public List<Pair> findAllPairsWhoseSumIsK(int[] inputArray, int k) {
Set<Integer> tempSet = new HashSet<>();
List<Pair> pairs = new ArrayList<>();
for(int i=0;i<inputArray.length;i++) {
tempSet.add(inputArray[i]);
}
for(int i=0;i<inputArray.length;i++) {
if((2*inputArray[i] != k) && tempSet.contains(k-inputArray[i])) {
pairs.add(new Pair(inputArray[i], k-inputArray[i]));
} …Run Code Online (Sandbox Code Playgroud) java ×8
assert ×6
assertion ×1
assertions ×1
gwt ×1
string ×1
testcase ×1
testing ×1
unit-testing ×1
validation ×1