【发布时间】: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。只是想知道,因为在其他语言中这似乎很容易。