[java] Difference between List, List<?>, List<T>, List<E>, and List<Object>