Java Android,循环浏览所有的获取者

我有一个像下面这样的模型。

public class Shifts{

    private double h00;
    private double h01;
    private double h02;
    private double h03;

    public Shifts() {
    }

    public Shifts(double h00, double h01, double h02, double h03) {
        this.h00 = h00;
        this.h01 = h01;
        this.h02 = h02;
        this.h03 = h03;
    }

    public double getH00() {
        return h00;
    }

    public void setH00(double h00) {
        this.h00 = h00;
    }

    public double getH01() {
        return h01;
    }

    public void setH01(double h01) {
        this.h01 = h01;
    }

    public double getH02() {
        return h02;
    }

    public void setH02(double h02) {
        this.h02 = h02;
    }

    public double getH03() {
        return h03;
    }

    public void setH03(double h03) {
        this.h03 = h03;
    }
}

我在一个循环适配器中调用这个模型来更新用户界面,并在… onBindViewHolder我确实喜欢这样。

holder.h00.setText(fooList.get(position).getH00()));
holder.h01.setText(fooList.get(position).getH01()));
holder.h02.setText(fooList.get(position).getH02()));
holder.h03.setText(fooList.get(position).getH03()));

在现实中,这个模型有很多的getter和setter 我想通过它们来循环,所以我可以做这样的事情。

for (int i = 0; i < holder.shift_layout.getChildCount(); i++) {
                //shift_layout is the Layout which holds all the views
                View v = holder.shift_layout.getChildAt(i);
                if (v instanceof TextView) {

                    v.setText(Hour(fooList.get(position).getGetter()));
                }
            }

有没有一种方法可以使用Java反射或任何方法 循环浏览一个模型的所有getter,然后调用它们?

在SO中,我找到了一些答案,但没有任何成功的方法来调用getters。

解决方案:

其他提供的答案,尤其是Magnus,肯定能完成任务。它们都是有效的答案。这个解决方案与其他解决方案的唯一区别是,这将确保方法名以 getH 这似乎是模式。它还检查返回类型是否为double类型,以帮助确保返回的方法是正确的。

        Shifts shifts = new Shifts(1, 2, 3, 4);

        Method[] methods = shifts.getClass().getDeclaredMethods();

        for (Method method : methods) {
            if (method.getName().startsWith("getH") && method.getReturnType() == double.class) {
                double value = (double) method.invoke(shifts);
            }
        }

给TA打赏
共{{data.count}}人
人已打赏
未分类

用pygame在python上进行蒙特卡洛,但最终窗口冻结。为什么呢?[重复]

2022-9-9 4:13:17

未分类

非字母复数的字符串转为numpy数组

2022-9-9 4:13:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索