SWE 619 Assignment 7
Fall 2017

Goal: Polymorphic Abstraction.

Liskov 8.8 and 8.9. (page 205) You are welcome to use Bloch's suggested exception types instead of Liskov's.
Use generics when defining your Indexer interface. That is, the search method should have generic parameters instead of Object parameters. Your code should compile without warnings. With generics, the signature for search() should be:

 public static <E> int search (Indexer<E> c, E x) 

Supply JUnit tests for your implementation.

In 8.9, instead of VectorIndexer, define and implement ListIndexer over Java List collections.

Java List collections typically allow null entries. Make sure you handle null values (either in c or for x) correctly.