@Override
public void setInput(Traffic traffic) {
this.traffic = traffic; 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;
}
} if (null == dpiAttr) {
dpiAttr = DpiModelFactory.eINSTANCE.createDpiAttr();
traffic.getAttrs().add(dpiAttr);
} if (null == floderAttr) {
floderAttr = DpiModelFactory.eINSTANCE.createFloderAttr();
dpiAttr.setFloderAttr(floderAttr);
} if (null == filesAttr) {
filesAttr = ModelFactory.eINSTANCE.createFilesAttr();
traffic.getAttrs().add(filesAttr);
}
initData();
} 我在if中加了break将有什么样的严重后果 请大家帮我分析下
public void setInput(Traffic traffic) {
this.traffic = traffic; 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;
}
} if (null == dpiAttr) {
dpiAttr = DpiModelFactory.eINSTANCE.createDpiAttr();
traffic.getAttrs().add(dpiAttr);
} if (null == floderAttr) {
floderAttr = DpiModelFactory.eINSTANCE.createFloderAttr();
dpiAttr.setFloderAttr(floderAttr);
} if (null == filesAttr) {
filesAttr = ModelFactory.eINSTANCE.createFilesAttr();
traffic.getAttrs().add(filesAttr);
}
initData();
} 我在if中加了break将有什么样的严重后果 请大家帮我分析下
一般if都是判断要查找的目标,如果找到了目标,后面就不需要再查找了,所以就break退出for循环
if (null == filesAttr)成立
dpiAttr = (DpiAttr) attr;
floderAttr = dpiAttr.getFloderAttr();
break;//////////////////////////注意此处
} else if (attr instanceof FilesAttr) {//获取FilesAttr
filesAttr = (FilesAttr) attr;
}
}
if (attr instanceof DpiAttr) {//获取DpiAttr
这个条件成立的话 就跳出for循环 ,执行以下语句
if (null == dpiAttr) {
for(2){
...
break;//只跳出 for2 循环
}
}你的代码中就是跳出 for 循环。