有个需求是这样子的:
public class Test{
    private Vector myVector = new Vector();
    private volatile boolean interrupt = false;
    
    public boolean getInterrupt(){
        return this.interrupt;
    }
    public void setInterrupt(boolean give){
        this.interrupt = give;
    }    public void changeMyVector(){
        this.myVector = vectorCreat();
    }    private Vector vectorCreat(){
        Vector tmpVector = new Vector();
        for(int i = 0;i < 100000;i ++){
            //如果被打断,跳出for循环,不改变myVector的内容。这里该怎么写呢?用break?谁帮忙看看
            if(!interrupt){//没有被打断,继续循环
                String tmp = "any value";
                tmpVector.addElement(tmp);
            }              
        }
        return tmpVector;
    }
}

解决方案 »

  1.   

      if(!interrupt){//没有被打断,继续循环
                    String tmp = "any value";
                    tmpVector.addElement(tmp);
                } else{
       break;
    }你这是不是打断后 vector中原来添加的值也不要了呢如果不要就将break直接改成 return new Vector。
      

  2.   

    对。原来添加的值也不要了。就是说,如果被打断了,不允许改变myVector
      

  3.   

     public void changeMyVector(){
        //有可能被取消而不赋值,
        //用返回值null表示被取消的情况,取消了就不赋值
        Vector v = vectorCreat();
        if( v != null ){
           this.myVector = v; 
        }
     }private Vector vectorCreat(){
      //真正要返回的
      Vector toBeReturn = null;
      Vector tmpVector = new Vector();
      //do{}while(false) 配合break是替代 goto 的常见手法。
      //也可以只用原来的for循环,结束时判断 i 是否循环到指定的值。
      //但用 do...while 更具一般性。
    outer:
      do{
        for(int i = 0;i < 100000;i ++){ 
           if(interrupt){
             break outer;
           }
           String tmp = "any value"; 
           tmpVector.addElement(tmp); 
        }
        //来到这里表明循环是无中断执行完毕了,可以返回
        toBeReturn = tmpVector;
      }while(false);
      return toBeReturn; 

      

  4.   

     private Vector vectorCreat(){ 
            Vector tmpVector = new Vector(); 
            for(int i = 0;i < 100000;i ++){ 
               if(interrupt){//被打断,跳出
                    return new Vector();//若要返回null则改为 return null;
                }     
              String tmp = "any value"; 
              tmpVector.addElement(tmp); 
             
            } 
            return tmpVector; 
        }