我有一个我想使用的遗留 validator 类。它提供了所有排列来验证 1-3 个不同的字段。
class Validator {
Checker Validator.A, Validator.B, Validator.C;
Checker[] ABC = {Validator.A, Validator.B, Validator.C};
Checker[] AB = {Validator.A, Validator.B};
Checker[] BC = {Validator.B, Validator.C};
Checker[] AC = {Validator.A, Validator.C};
}
我对这门课没有任何影响。但必须使用这些跳棋之一。
我想根据不为空的字段选择所需的 validator 。 因此,我写了以下 switch 语句。但对我来说,它似乎非常丑陋。我该如何改进?
String a, b, c;
boolean isA = !a.isEmpty();
boolean isB = !b.isEmpty();
boolean isC = !c.isEmpty();
Checker[] checker;
if (isA && isB && isC) {
checker = Validator.ABC;
} else if (isA && isB) {
checker = Validator.AB;
} else if (isA && isC) {
checker = Validator.AC;
} else if (isB && isC) {
checker = Validator.BC;
} else if (isA) {
checker = Validator.A;
} else if (isB) {
checker = Validator.B;
} else if (isC) {
checker = Validator.C;
}
最佳答案
这个怎么样?
List<Checker> checkers = new ArrayList<Checker>();
if (!a.isEmpty()) checkers.add(Validator.A);
if (!b.isEmpty()) checkers.add(Validator.B);
if (!c.isEmpty()) checkers.add(Validator.C);
Checker[] checker = checkers.toArray(new Checker[checkers.size()]);
关于java - 如何编写基于3个变量的switch语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905630/