我有一个字符串列表,并且我有10个独特的方法根据它是什么字符串进行不同的验证。例如,这就是我现在拥有的:
if(name1 != null){
validateName1();
}
else{
throw Error();
}
if(name2 != null){
validateName2();
}
else{
throw Error();
}
...
因此,我没有对所有不同的方法进行相同的if-else检查10次,而是希望将名称存储在String列表中,并通过以下方式进行for循环:
List<String> names = new ArrayList<String>();
for(name : names){
if(name != null){
validate[name]();
}
else{
throw Error();
}
请让我知道这是否可行,或者这是一种基本方法,并且可以更好地解决我的问题。要重申我的问题,基本上我有10个不同且唯一的验证方法,而不是为每个方法编写if-else,我希望能够通过for循环以新名称调用这些方法。
在此先感谢您的帮助!
首先,每种类型的名称都有一个不同的验证器。您说您有十个名字:
public interface Name {
}
public class ShortName implements Name {
}
public class LongName implements Name {
}
public class MaidenName implements Name {
}
等等。然后,您必须验证名称。
public interface Name {
public void validate();
}
这会使您的其他名称没有该setName(...)
方法而引发编译器错误。因此添加它。
public class ShortName implements Name {
private String name;
public void validate() {
// the first pass at validation
if (name == null) {
throw IllegalStateException("Name cannot be null");
}
// the second pass at validation
if ("".equals(name)) {
throw IllegalStateException("Name has a zero length");
}
// ok, the name is valid
}
}
一旦为每个名称都使用了其中之一,就可以执行此操作。
List<Name> names = getNames();
for (Name name : names) {
names.validate();
}
并且每种类型的名称都将运行其唯一的验证器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句