The convert method!

  • Explain how Position is different from the Node (inner) class.
  • Describe the role of the convert method.

Open the LinkedList.java file in the starter code and find the helper method convert:

// Convert a Position back into a Node.
// Guards against null positions, positions from other data structures,
// and positions that belong to other LinkedList objects.
private Node<T> convert(Position<T> position) throws PositionException {
  try {
    Node<T> node = (Node<T>) position;
    if (node.owner != this) {
      throw new PositionException();
    }
    return node;
  } catch (NullPointerException | ClassCastException e) {
    throw new PositionException();
  }
}

The convert method takes care of any situation that may require throwing the PositionException. You should be using this method when receiving a position as an argument. For example:

public boolean first(Position<T> position) throws PositionException {
  Node<T> node = convert(position);
  return head == node;
}