gpt4 book ai didi

java - 如何使用for循环改变方法名

转载 作者:搜寻专家 更新时间:2023-10-31 20:28:09 24 4
gpt4 key购买 nike

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

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

if(name2 != null){
validateName2();
}
else{
throw Error();
}
...

因此,我希望我可以将名称存储在一个字符串列表中,并让一个 for 循环以下列方式遍历它,而不是对所有不同的方法执行相同的 if-else 检查 10 次:

List<String> names = new ArrayList<String>();
for(name : names){
if(name != null){
validate[name]();
}
else{
throw Error();
}

请让我知道这是否可行,或者这是一个基本的方法并且有更优雅的解决方案来解决我的问题。重申一下我的问题基本上是我有 10 个不同且独特的验证方法,而不是为每个方法编写 if-else,我希望能够通过 for 循环以使用新名称调用这些方法。

在此先感谢您的帮助!

最佳答案

首先,每种类型的名称都有不同的 validator 。你说你有十个名字:

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();
}

并且每个类型的名称都将运行其唯一的 validator 。

关于java - 如何使用for循环改变方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com