有个需求是这样子的:
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;
}
}
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;
}
}
String tmp = "any value";
tmpVector.addElement(tmp);
} else{
break;
}你这是不是打断后 vector中原来添加的值也不要了呢如果不要就将break直接改成 return new Vector。
//有可能被取消而不赋值,
//用返回值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;
}
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;
}