title: ArrayList<Integer> automatically change its type to ArrayList <String>
body: <pre><code>public void run(){
      setFont("Courier-24");
      //Define list as ArrayList&lt;Integer&gt;
      ArrayList&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;();
      readList(list);
  }
  
  private void readList(ArrayList list){
      list.add("Hello");
      list.add(2);
      println("list = "+list);
      println("Type of list = "+list.get(0).getClass());
      println("Type of list = "+list.get(1).getClass());
  }
  </code></pre>
  
  <p>Result:</p>
  
  <blockquote>
    <p>list = [Hello, 2]<br>
       Type of list = class java.lang.String<br>
       Type of list = class java.lang.Integer<br></p>
  </blockquote>
  
  <p>Here is my code and result. My question is, how is it possible that ArrayList of type Integer can store String objects? What's the type of list now? And what mechanism is this?</p>