欢迎来到天天文库
浏览记录
ID:39365557
大小:889.23 KB
页数:26页
时间:2019-07-01
《尚硅谷佟刚Java基础反射》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、反射讲师:佟刚新浪微博:尚硅谷-佟刚-2-理解Class类理解Java的类加载机制学会使用ClassLoader进行类加载理解反射的机制掌握Constructor、Method、Field类的用法理解并掌握动态代理目标Class类Class类对象照镜子后可以得到的信息:某个类的数据成员名、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE都为其保留一个不变的Class类型的对象。一个Class对象包含了特定某个类的有关信息。Class对象只能由系统建立对象一个类在JVM中只会有一个Class实例每个类的实例都会记得自己是由哪个Class实例所生成获取Class对象的方式Clas
2、s类的常用方法方法名功能说明staticClassforName(Stringname)返回指定类名name的Class对象ObjectnewInstance()调用缺省构造函数,返回该Class对象的一个实例ObjectnewInstance(Object[]args)调用当前格式构造函数,返回该Class对象的一个实例getName()返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称ClassgetSuperClass()返回当前Class对象的父类的Class对象Class[]getInterfaces()获取当前Class对象的接口ClassLoader
3、getClassLoader()返回该类的类加载器ClassgetSuperclass()返回表示此Class所表示的实体的超类的ClassClassLoader类装载器是用来把类(class)装载进JVM的。JVM规范定义了两种类型的类装载器:启动类装载器(bootstrap)和用户自定义装载器(user-definedclassloader)。JVM在运行时会产生3个类加载器组成的初始化加载器层次结构,如下图所示:引导类加载器:用C++编写的,是JVM自带的类装载器,负责Java平台核心库,用来装载核心类库。该加载器无法直接获取扩展类加载器:负责jdk_home/lib/ext目录下的
4、jar包或–Djava.ext.dirs指定目录下的jar包装入工作库系统类加载器:负责java–classpath或–Djava.class.path所指的目录下的类与jar包装入工作演示类加载机制的层次关系:publicclassClassLoaderDemo{publicstaticvoidmain(String[]args){ClassLoaderclassloader;//获取系统缺省的ClassLoaderclassloader=ClassLoader.getSystemClassLoader();System.out.println(classloader);while(cl
5、assloader!=null){//取得父的ClassLoaderclassloader=classloader.getParent();System.out.println(classloader);}try{Classcl=Class.forName("java.lang.Object");classloader=cl.getClassLoader();System.out.println("java.lang.Object'sloaderis"+classloader);cl=Class.forName("com.atguigu.javase.reflection.ClassLoa
6、derDemo");classloader=cl.getClassLoader();System.out.println("ClassLoaderDemo'sloaderis"+classloader);}catch(Exceptione){System.out.println("Checknameoftheclass");}}}执行结果如下://表示系统类装载器实例化自类sun.misc.Launcher$AppClassLoadersun.misc.Launcher$AppClassLoader@19821f//表示系统类装载器的parent实例化自类sun.misc.Launcher
7、$ExtClassLoadersun.misc.Launcher$ExtClassLoader@addbf1//表示系统类装载器parent的parent为bootstrap,无法直接获取null//表示类Object是由bootstrap装载的java.lang.Object'sloaderisnull//表示用户类是由系统类装载器装载的ClassLoaderDemo'sloaderissun.misc.Launche
此文档下载收益归作者所有