1.数组定义不能使用泛型
ArrayList<String> [] args = new ArrayList<String>()[2];-----------------------编译错误
2.泛型的实际类型必须是引用类型,不能是基本类型(自动装箱除外)
3.反射不能通过泛型参数来确定泛型的具体类型(Vetor<Date>),但可以把泛型放到一个方法体中,然后用反射该方法的方法获得泛型的实际类型,sample:
Method method = ClassName.class.getMethod("方法名",方法参数类型.class);
//-----------方法参数Vetor<Date>,应写为Vetor.class而不是Vetor<Date>.class,因为编译完后jvm会去泛型类型,到时候Vetor<Date>就是Vetor----//
Type [] types = method.getGenericParameterTypes(); //得到泛型参数数组
ParameterizedType tType = (ParameterizedType)types[0]; //实现了Type的ParameterizedType类
tType.getActualTypeArguments()[0] //可能会有多个泛型参数,所以是数组
4.3个类加载器:
BootStrap ExtClassLoader AppClassLoader形成树型结构,BootStrap是用c++写的集成到jvm中,因此它并不是一个类
BootStrap-->负责加载jre自带的类
ExtClassLoade-->顾名思义,加载扩展类(一般在ext文件夹下)
AppClassLoader-->我们写的一般的类
5.类加载的委托
从最上层的类加载器BootStrap开始去加载,没找到就找下一级类加载器直到找到为止。例如:能自己写一个java.lang.System可以吗?
答:1)可以,把我们写的类指定一个确定的类加载器加载
2)不可以,如果我们没指定类加载器,就会启动类加载委托机制,BootStrap就把jre自带的System类加载进来了,我们写的类就不会再加载了