在执行任务时,我遇到了"Legacy code",它是用Java8编译的,但不是用Java16编译的,它使用的是这段特定的代码。
protected void onCalculate() {
final ConsoleMapperForTree cm = new ConsoleMapperForTree();
cm.setVisible(true);
cm.getConsole().setFont(new Font("Tahoma", 0, 20));
final DefaultMutableTreeNode root = (DefaultMutableTreeNode)this.tree.getModel().getRoot();
final Enumeration<DefaultMutableTreeNode> enmFclt = (Enumeration<DefaultMutableTreeNode>)root.children(); // this is highlighted as an error
while (enmFclt.hasMoreElements()) {
final DefaultMutableTreeNode fclt = enmFclt.nextElement();
int nSpec = 0;
final Enumeration<DefaultMutableTreeNode> enmDep = (Enumeration<DefaultMutableTreeNode>)fclt.children(); // this is highlighted as an error
while (enmDep.hasMoreElements()) {
final DefaultMutableTreeNode dep = enmDep.nextElement();
final Object data = dep.getUserObject();
if (((Dept)data).spec) {
++nSpec;
}
}
System.out.println(fclt + " has " + nSpec + " specdepartments");
}
}发布于 2021-11-09 22:14:22
问题是Java希望您对树的元素执行类型转换,而不是对整个树执行类型转换。因此,请尝试按如下方式移动类型转换运算符:
protected void onCalculate() {
final ConsoleMapperForTree cm = new ConsoleMapperForTree();
cm.setVisible(true);
cm.getConsole().setFont(new Font("Tahoma", 0, 20));
final DefaultMutableTreeNode root = (DefaultMutableTreeNode)this.tree.getModel().getRoot();
final Enumeration<TreeNode> enmFclt = root.children(); // this is highlighted as an error
while (enmFclt.hasMoreElements()) {
final DefaultMutableTreeNode fclt = (DefaultMutableTreeNode) enmFclt.nextElement();
int nSpec = 0;
final Enumeration<TreeNode> enmDep = fclt.children(); // this is highlighted as an error
while (enmDep.hasMoreElements()) {
final DefaultMutableTreeNode dep = (DefaultMutableTreeNode) enmDep.nextElement();
final Object data = dep.getUserObject();
if (((Dept)data).spec) {
++nSpec;
}
}
System.out.println(fclt + " has " + nSpec + " specdepartments");
}
}这种并列比较显示了不同之处(单击可放大):

https://stackoverflow.com/questions/69496907
复制相似问题