http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
This page has excellent pdf file with explanation how generic work. I think if you read you will find answer.
Simple answer is: this how generic works
also
Test.java:7: error: incompatible types: List<Integer> cannot be converted to List<Number>
List<Number> list = Arrays.asList(s);
^
Test.java:8: error: incompatible types: ArrayList<Integer> cannot be converted to ArrayList<Number>
ArrayList<Number> lis2 = new ArrayList<Integer>();
^
for
java 7.
in java 8 result differ, because List<Number> take in account to get type of T.