我不明白findindex是如何计算的,我从未见过这样的事情。请解释以下代码。
private boolean remove(Object o, Object[] snapshot, int index) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
Object[] current = getArray();
int len = current.length;
if (snapshot != current) findIndex: {
int prefix = Math.min(index, len);
for (int i = 0; i < prefix; i++) {
if (current[i] != snapshot[i] && eq(o, current[i])) {
index = i;
break findIndex;
}
}
if (index >= len)
return false;
if (current[index] == o)
break findIndex;
index = indexOf(o, current, index, len);
if (index < 0)
return false;
}
Object[] newElements = new Object[len - 1];
System.arraycopy(current, 0, newElements, 0, index);
System.arraycopy(current, index + 1,
newElements, index,
len - index - 1);
setArray(newElements);
return true;
} finally {
lock.unlock();
}
}
还打破了findIndex;有吗
您如何称呼这种功能?何时引入?
findIndex是变量或方法还是静态块?什么类型的
最佳答案
“ findIndex”是一个标签,相应的中断将“最多”中断该标签。
换句话说:这是一种允许您从嵌套循环中继续/中断外部循环的机制!
这只是普通break / continue的更强大版本。它很少使用,因为它会迅速增加代码的复杂性(基本上打破了结构化编程中的单入口/单出口原则)。
从这个角度来看,它是goto命令的Java版本。