我有这样的抽象类布局:
public abstract class AbstractMapper{
protected abstract void doMap();
protected String mapCode(final String code){
if(code.length > 5){
//continue mainLoop from mapper
}
return code;
}
}
以及映射器的实现(众多之一):
public class Mapper1{
@Override
public void doMap(){
mainLoop: for(LoopVar var: LoopVars){
String code = var.getCode();
code = mapCode(code);
//finish mapping
}
}
我在曾经实现的映射器中拥有mainLoop,并且在许多映射器中我称之为mapCode。不过,每次我的代码长度不是我想要的时,我都想继续 mainLoop。
我知道我可以简单地在每个实现的映射器中添加额外的检查,但是有很多映射器,理想情况下我想在抽象类的方法中干净地完成这一切(我也不想命名我的循环,但mapCode通常位于嵌套循环内)。
如有任何帮助,我们将不胜感激。
谢谢
最佳答案
为什么不在抽象映射器中添加一个 shouldContinueMainLoop(code)
?这样,它将在所有可用的映射器中实现,并且在 Mapper1 调用
中也可用。您只需将 mainLoop 更改为
mainLoop: for(LoopVar var: LoopVars){
String code = var.getCode();
if(shouldContinueMainLoop(code))
continue;
code = mapCode(code);
//finish mapping
}
关于java - 有什么方法可以从层次结构中更高的类中退出命名循环(或其他方式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25401655/