您好,我正在制作的程序有一堆 do while 语句,每个语句都有在另一个类中定义的不同 setMethod,但是我希望以更紧凑的方式执行此操作。我想知道某种循环是否可以做到这一点。或者如果你可以有一个 setMethod 数组。或者任何可以使代码紧凑的东西。
contestant1 is an object of the class contestant information which contains the set methods for each field.
do {
try {
flag = false;
System.out.println("Please enter your first name.");
String firstName = Scanner.nextLine();
contestant1.setName(firstName);
} catch (InvalidInputException e) {
System.out.println(e.getMessage());
flag = true;
}
} while (flag);
do {
try {
flag = false;
System.out.println("Please enter your last name.");
String lastName = Scanner.nextLine();
contestant1.setLastName(lastName);
} catch (InvalidInputException e) {
System.out.println(e.getMessage());
flag = true;
}
} while (flag);
do {
try {
flag = false;
System.out.println("Please enter your street number.");
String streetNumber = Scanner.nextLine();
contestant1.setStreetNumber(streetNumber);
} catch (InvalidInputException e) {
System.out.println(e.getMessage());
flag = true;
}
} while (flag);
最佳答案
String[] setMethodNames={"FirstName","LastName","Street"};
Class cls = Class.forName("<qualifiedname>Contestant");
Class parameterTypes = String.class;
for(String s:setMethodNames){
do{
try{
flag=false;
System.out.println("Please enter your "+s+" :");
String inp=scanner.nextLine();
cls.getDeclaredMethod("set"+s, parameterTypes ).invoke(contestant1, inp);
}catch(InvalidInputException e){
System.out.println(e.getMessage());
flag = true;
}
}while(flag);
}
您还可以使用反射和调用 setter
关于java - 如何以更少的重复调用 set 方法。 ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32899960/