java - Java - 用方法名连接字符串
问题描述
正如您在这篇文章标题中看到的那样,我有一个愚蠢的问题......但是我想知道是否有更有效的方法来处理我面临的这种编程场景。我正在使用Java编程,并且创建了以下类:
public class Route {
private String objective_1;
private String objective_2;
...
// CONSTRUCTOR__________________________________________________________________________________
public Route() {
}
public Route(String objective_1, String objective_2, ...) {;
this.objective_1 = objective_1;
this.objective_2 = objective_2;
...
}
// GET AND SET__________________________________________________________________________________
public String getObjective_1() {...}
public void setObjective_1(String objective_1) {...}
public String getObjective_2() {...}
public void setObjective_2(String objective_2) {...}
...
}
接下来(在主类中)我从Route 类创建对象并将它们保存在Arraylist (array_routes) 中。后来我尝试从 Arraylist 的 0 索引上的对象获取并打印所有目标。我正在使用这段代码:
System.out.println(array_routes.get(0).getObjective_1);
System.out.println(array_routes.get(0).getObjective_2);
...
现在来了一个愚蠢的问题……我在路线类中有 28 个目标。我打算做的是有一种更有效的方法来打印所有对象目标。而不是编写 28 个 get Objective 方法(如在前面的代码中),我想知道我是否可以做这样的事情:
for (int j = 1; j < 29 ; j++) {
String jj = String.valueOf(j);
System.out.println(array_routes.get(0).getObjective_+"jj");
}
我知道前面的代码不起作用...但是有没有人知道不编写 28 get Objective 方法的有效方法?这甚至可能吗?
提前感谢您的时间,并希望您的帮助!
解决方案
我认为这是高级枚举使用的一个案例。然后你就有了你的目标的名字,并且可以处理地图、集合和子集。
enum Objective { OBJIVE1, OBJECTIVE2, ... }
EnumMap<Objective, String> objectives = new EnumMap<>(Objective.class);
反射是一个拐杖而且很慢,所以给 API 重新设计一个机会。