コード例 #1
0
public abstract class Visitor<T, R> {
  private boolean isDone;
  private ConcurrentLinkedQueue<R> founds = New.concurrentLinkedQueue();

  public abstract void visit(T value);

  public boolean isDone() {
    return isDone;
  }

  public void done() {
    this.isDone = true;
  }

  public void add(R found) {
    this.founds.add(found);
  }

  public R getFirst() {
    if (founds.isEmpty()) return null;
    return founds.peek();
  }

  public ConcurrentLinkedQueue<R> getFounds() {
    return founds;
  }
}