フローチャートをJavaやその他のコードに変換するソフトウェアを設計しようとしています。ただし、ConcurrentModificationExceptionが繰り返し発生します。ただし、リンクリストへのアクセスはさまざまな場所で発生するため、ブール値を使用してconcurrentModificationを防ぐことはできません。
そこで、解決策として、以下のアダプタクラスを作成しました。ただし、次のメソッドからも同じ例外がスローされます。他の解決策はありますか、または可能であれば、plzは私のコードを変更する方法を教えてくれます...
どうもありがとうございます...
import java.util.Iterator;
import java.util.LinkedList;
public class LinkedListAdapter<T> extends LinkedList<T>{
@Override
public boolean add(T t){
boolean b;
synchronized(this){
b = super.add(t);
}
return b;
}
@Override
public T remove(){
T t;
synchronized(this){
t = super.remove();
}
return t;
}
@Override
public Iterator<T> iterator(){
final LinkedListAdapter<T> adap = this;
return
new Iterator<T>(){
private Iterator<T> iter;
{
synchronized(adap){
iter = LinkedListAdapter.this.getIterator();
}
}
@Override
public boolean hasNext() {
boolean b;
synchronized(adap){
b = iter.hasNext();
}
return b;
}
@Override
public T next() {
T t;
synchronized(adap){
t = iter.next();
}
return t;
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
protected Iterator<T> getIterator() {
Iterator<T> iter;
synchronized(this){
iter = super.iterator();
}
return iter;
}
}