java - 构建名称的 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 反射。
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
推荐阅读
- amazon-web-services - 无法再使用 AWS Toolkit for VS 2019 进行部署
- terraform - 错误:无效索引空元组给定键未标识此集合值中的元素
- python - TypeError:在if-else循环中字符串格式化python期间并非所有参数都转换
- reactjs - 在单选按钮选择或取消选择上运行一个简单的功能
- file - 相对于第一个字节(头)检索文件的最后一个字节(尾)有多难?
- splunk - 访问 Splunk Cloud Rest API
- html - 是否可以不使用 GET 提交多滑块的初始值 - javascript
- sql - WHERE 子句中的 CASE 语句或 OR 语句是否更快?(SQL/BigQuery)
- linux - 如何在shell脚本的一行中获取第四个数字
- xslt - 是否可以将 Saxon 配置为返回变量值和错误行