67,550
社区成员




//最主要影响这块,用了break的话可能只遍历了前面一部分,抛弃了后面一部分,
//前面没attr instanceof FilesAttr的话,就null == filesAttr,后面有也没用
if (null == filesAttr) {
filesAttr = ModelFactory.eINSTANCE.createFilesAttr();
traffic.getAttrs().add(filesAttr);
}
//另外2个if就影响一下值而已
//加不加break的区别就是,
//加了break,找到第一个DpiAttr类型的attr,就赋值,跳出for循环,
//这时如果之前遍历的值里没有FilesAttr类型的attr,那么第二个if就没有执行过,即使没有遍历的部分里面有值能满足条件也没用
//不加break,就要全部遍历,第一个if里的最后的赋值是找到最后那个DpiAttr类型的attr时做的,
//第二个if里的最后的赋值是找到最后那个FilesAttr类型的attr时做的
for (IAttribute attr : traffic.getAttrs()) {
if (attr instanceof DpiAttr) {//获取DpiAttr
dpiAttr = (DpiAttr) attr;
floderAttr = dpiAttr.getFloderAttr();
break;//////////////////////////注意此处
} else if (attr instanceof FilesAttr) {//获取FilesAttr
filesAttr = (FilesAttr) attr;
}
}
for (IAttribute attr : traffic.getAttrs()) {
if (attr instanceof DpiAttr) {//获取DpiAttr
dpiAttr = (DpiAttr) attr;
floderAttr = dpiAttr.getFloderAttr();
break;//////////////////////////注意此处
} else if (attr instanceof FilesAttr) {//获取FilesAttr
filesAttr = (FilesAttr) attr;
}
}