Java里面的泛型只是一种编译约束,在运行时都只是一个普通的collection而已
object在输出的时候是调用了toString()方法输出
声明为list和List<Object>在编译期的检查是不同的,尽管存的都是Object。
List可以向上转型为父类<?>的引用,而List<Object>则只能转为父类<Object>型的。
至于存的什么类型,你声明的引用是怎样的类型,那存的就是同样的类型。
Collection<String> c = new Vector ();这里的c是一个只能装String类型的collection。存的是String类型。
Collection c = new Vector<String>();这里的c是一个只能在Vector装String类型的collection。存的类型信息则被擦除了。
List list=new ArrayList(); 这么写,相当于 List<?> list=new ArrayList<?>(); 你没有用泛型,这里的?能匹配任何类型,所以编译可以通过。