Inconsistent arguments in ArrayList methods
<p>In ArrayList API <strong>add()</strong> takes an argument of generic parameter type, but <strong>contains()</strong> and <strong>indexOf()</strong> take arguments of type <strong>Object</strong>.</p>

<pre><code>public class ArrayList&lt;E&gt; ...{
     public boolean add(E e);  
     public boolean contains(Object o);
     public int indexOf(Object o);
     ....
}
</code></pre>

<p><a href="http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html" rel="nofollow">Java Doc for ArrayList</a></p>

<p>So i am just wondering if its something to do with Generics or it's design in-consistency ?</p>

<p>I looked at <strong>Openjdk</strong> implementation but couldn't find any specific reason for this.</p>
