@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将有什么样的严重后果  请大家帮我分析下 

解决方案 »

  1.   

    满足if条件,则退出for循环
    一般if都是判断要查找的目标,如果找到了目标,后面就不需要再查找了,所以就break退出for循环
      

  2.   

    在你的另一贴回了,这里也贴上吧影响就是,如果你找到dpiAttr和floderAttr就break,那么就不会再查找filesAttr了,所以会导致后面的
    if (null == filesAttr)成立
      

  3.   

    break的作用就是跳出循环。在你这里,就是在第一次进入if后,执行完这一块就会跳出循环了,就不会执行else if的内容这一段,也不会再循环后面的内容。
      

  4.   

    在if 中加break  满足就会 跳出 for 循环了!!
      

  5.   

    如果满足IF条件就就执行break退出for循环
      

  6.   

    break会跳出整个循环,你可以用continue跳出本次循环,或者可以加标号,跳出想跳出的层次循环
      

  7.   

    if (attr instanceof DpiAttr) {//获取DpiAttr  
    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) {  
      

  8.   

    break是跳出整个循环,continue是弹出当前循环,进入下次循环
      

  9.   

    break 会跳出与 break 最近的一层循环。for(1){
    for(2){
    ...
    break;//只跳出 for2 循环
    }
    }你的代码中就是跳出 for 循环。