首页 > 解决方案 > 构建名称的 Java 设置属性

问题描述

我有个问题。我有以下课程:

public class Candlestick {
    private double ma5;
    private double ma10;
    private double ma17;

    public void setMA5(double value) {
        this.ma5 = value;
    }

    public void setMA10(double value) {
        this.ma10 = value;
    }

    public void setMA17(double value) {
        this.ma17 = value;
    }
}

然后我还有以下数组:

public static List<Integer> mas = List.of(5, 10, 17);

现在在我的代码中,我有一个循环遍历mas列表的 for 循环,如下所示:

Candlestick candlestick = new Candlestick();

for (int ma : mas) {
    
    // UPDATE THE CORRECT MA VALUE IN THE CANDLESTICK CLASS
    candlestick.setMA ????

}

但我需要更新我当前在循环中的类的属性。我怎样才能以编程方式建立setMA()功能?

标签: java

解决方案


您可以使用 Java 反射。

Candlestick candlestick = new Candlestick();

for (int ma : mas) {
    Method setMaMethod = Candlestick.class.getDeclaredMethod("setMA" + ma, double.class);
    setMaMethod.invoke(candlestick, 1.0);
}

此代码调用作为函数参数的setMA*传递。1.0


推荐阅读