【问题标题】:JAVA: dynamic object property of a class using a variableJAVA:使用变量的类的动态对象属性
【发布时间】:2021-07-20 19:34:06
【问题描述】:

我正在通过在线课程学习 OOP 和 java。本章是关于访问修饰符的,你必须调用 TestRobot 的每一个可能的属性。

现在我已经尝试使用属性数组并想使用 for 循环来检查它们是否存在。当然,我可以只做 4 次,但这在某种程度上是多余的。 :D 现在我有一个错误,没有符号属性。我的建议是编译器正在检查类机器人的“属性”。

是否有可能告诉 java 属性是类终端的数组或变量,而不是类机器人本身的一部分?例如,在 JavaScript 中,您只需编写 robots[attributes[i]]

甚至可以调用类的每个属性吗?

class TestRobot {
    private int secretKey = 602413;
    protected int numberOfProcessorCores = 4;
    boolean hasFirewall = false;
    public String id = "58-08-2";
}


class Terminal {
    String[] attributes = {"secretKey", "numberOfProcessorCores", "hasFirewall", "id"};
    
    public void hackRobot(TestRobot robot) {
        for(int i = 0; i < attributes.length; i++){
            if(robot.attributes[i]) {
                System.out.println(attributes[i]);
            }
        }
    }
}

【问题讨论】:

  • 从技术上讲,您可以使用 java 反射来获取类的字段,但如果您只是学习访问修饰符,那将是一种相当先进的技术。
  • 您给出的 JavaScript 示例似乎是用于迭代 HTML 属性,而不是 JavaScript / 对象属性
  • @DLynch 谢谢。我刚刚用“老式”的方式完成了任务。 :D 也许我稍后会使用 java Reflection API。只是想知道,因为在其他语言中这似乎很容易。

标签: java arrays class oop


【解决方案1】:

是的,这可以通过 reflection API 实现。您可以使用TestRobot.class.getDeclaredAttributes() 动态获取属性列表,然后您可以通过编程方式检查每个字段的类型、其可见性,并且您可以在TestRobot 的实例上获取/设置这些属性的值。

【讨论】:

    猜你喜欢
    • 2021-10-25
    相关资源
    最近更新 更多