basic java-5

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类加载进来了,我们写的类就不会再加载了

你可能感兴趣的:(java,jvm,C++,c,ext)