繁体   English   中英

Java - 将字符串与方法名称连接起来

[英]Java - Concatenate String with method name

正如你在这篇文章标题中看到的,我有一个愚蠢的问题......但是我想知道是否有更有效的方法来处理我面临的这种编程场景。 我正在使用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 方法的有效方法? 这甚至可能吗?

提前感谢您的时间,也希望能得到您的帮助!

IntStream.range(1, 29).forEach(i->{
            Method method = output.getClass().getMethod("getFillerLibre"+ String.valueOf(i));
            method.invoke(output);
        });

我认为这是高级枚举使用的一个案例。 然后你有你的目标名称,并且可以处理地图、集合和子集。

enum Objective { OBJIVE1, OBJECTIVE2, ... }

EnumMap<Objective, String> objectives = new EnumMap<>(Objective.class);

反射是一个拐杖而且很慢,所以给 API 重新设计一个机会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM