Java 如何使用for循环更改方法名称

Java 如何使用for循环更改方法名称,java,Java,我有一个字符串列表,我有10个独特的方法,根据它是什么字符串进行不同的验证。例如,这就是我现在拥有的: if(name1 != null){ validateName1(); } else{ throw Error(); } if(name2 != null){ validateName2(); } else{ throw Error(); } ... 因此,与其对所有不同的方法执行相同的if-else检查10次,我希望我可以将名称存储在字符串列表中,并使用for循环以以下

我有一个字符串列表,我有10个独特的方法,根据它是什么字符串进行不同的验证。例如,这就是我现在拥有的:

if(name1 != null){
  validateName1();
}
else{
  throw Error();
}

 if(name2 != null){
  validateName2();
}
else{
  throw Error();
}
...
因此,与其对所有不同的方法执行相同的if-else检查10次,我希望我可以将名称存储在字符串列表中,并使用for循环以以下方式遍历它:

List<String> names = new ArrayList<String>();
for(name : names){
   if(name != null){
     validate[name]();
   }
   else{
     throw Error();
   }
List name=new ArrayList();
(姓名:姓名){
if(name!=null){
验证[名称]();
}
否则{
抛出错误();
}
请让我知道这是否可行,或者这是一个基本的方法,并且我的问题有一个更优雅的解决方案。重申我的问题是,我基本上有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();
}
List name=getNames();
用于(名称:名称){
name.validate();
}

每种类型的名称都将运行其唯一的验证器。

定义接口,使用实现此接口的对象创建数组/哈希映射,然后您将能够调用
array[i].method(value)
我认为某种验证或测试框架在这里也是一个好主意。我认为这个问题与CodeReview比StackOverflow更相关:看起来它会起作用。谢谢你的帮助!如果我在实现它时遇到任何问题,我会告诉你。我想我可以通过编写更少的代码来简化我的代码。看起来会的为了实现一个接口和为所有方法编写相同的代码,需要做更多的工作。这绝对是一个优雅的解决方案,但我最好不要用这种方法来优化/美化我的代码。不过,谢谢你的回答!@itsanabhibility我理解,请记住维护代码比维护代码更昂贵虽然我们都在开发代码时做出权衡,但是当你看解决方案时,你应该考虑的不是代码行,而是代码如何被修改来做预期的未来变化。毕竟,我们抱怨管理者是无能的,因为他们使用LOC作为度量,所以我们不应该决定LOC是一个有效的度量。内部集成电路。