当前位置: 首页 > news >正文

厦门网站建设建设公司正规网店代运营公司

厦门网站建设建设公司,正规网店代运营公司,网站开发技术服务合同范本,母婴网站这么做我的后端学习大纲 我的Java学习大纲 1、Java反射机制原理图#xff1a; 源代码通过Javac编译得到字节码文件#xff0c;当我执行到new一个对象的时候#xff0c;字节码文件会通过ClassLoader被加载#xff0c;然后得到一个Class类对象#xff0c;存放在堆中#xff0c;加… 我的后端学习大纲 我的Java学习大纲 1、Java反射机制原理图 源代码通过Javac编译得到字节码文件当我执行到new一个对象的时候字节码文件会通过ClassLoader被加载然后得到一个Class类对象存放在堆中加载完后Cat对象就生成了生成的这个对象一定知道它是属于哪个Class类对象的 2、理解java.lang.Class类 1.1.类的加载过程 a.编译 程序经过javac.exe命令以后会编译生成一个或多个字节码文件(.class结尾) b.类加载 1.我们使用java.exe命令对某个字节码文件进行解释运行相当于把某个字节码文件加载到内存中。这个过程就是类加载的过程不包括编译那一步2,加载到内存中的类我们就称为运行时类这个运行时类就作为Class类的一个实例对象 比如Class clazz Cat.classCat的这个运行时类Cat.class就是Class类的实例对象换句话说Class的实例对象就对应着一个运行时类。类的本质也是对象万事万物皆对象加载到内存中的运行时类会缓存一定的时间。在此时间之内我们可以通过6种不同的方式来获取此运行时类(获取Class类的实例对象) 3、获取Class类实例对象的方法: 根据下图类加载的过程我们在不同阶段有不同方式来获取Class类实例对象 3.1.方式1在代码阶段: 通过Class的静态方法forName(String classPath)获取 1.已知一个类的全类名且该类在类的路径下那么就可以通过Class类的静态方法forName()获取可以抛出ClassNotFoundExpection2.实例对象Class cls1 Class.forName(java.lang.Cat)这种方式会进行类的静态初始化工作3.应用场景多用于配置文件读取类全路径加载类 //方式一调用Class的静态方法forName(String classPath)参数是类的包路径 Class clazz3 Class.forName(com.atguigu.java.Person); //clazz3 Class.forName(java.lang.String); System.out.println(clazz3);//输出com.atguigu.java.Person3.2.方式2在加载阶段: 在加载阶段通过调用运行时类的属性.class获取 1.若已经知道具体的类通过类的class获取此方式最为安全可靠程序性能最高举例如Class cls Cat.class; 这种方式不会做任何类的初始化工作2.应用场景多用于参数传递、如通过反射得到对应的构造器对象。 //方式二调用运行时类的属性.class Class clazz1 Person.class; System.out.println(clazz1);//输出com.atguigu.java.Person3.3.方式3在运行阶段 在运行阶段通过调用运行时类的对象通过对象.getClass()获取 1.已知某个类的实例调用该实例的getClass()方法获取Class对象实例2.实例Class cls 对象.getClass();//运行类型3.应用场景通过创建好的对象获取Class对象4.这种方式静态初始化和非静态初始化工作都会进行 //方式三通过运行时类的对象,调用getClass()已经知道了Person类的P对象通过调用这个类的getclass方法就可以获取Class类的实例Person p1 new Person();Class clazz2 p1.getClass();System.out.println(clazz2);//输出com.atguigu.java.Person3.4.方式4使用类加载器ClassLoader() 通过类加载4种加载器器获取Class类对象 1.ClassLoader cls 对象.getClass().getClassLoader();class clazz4 cls.loadClass(全类名) //方式四使用类的加载器ClassLoader (了解)ClassLoader classLoader car.getClass.getClassLoader();//得到类加载器carClass clazz4 classLoader.loadClass(com.atguigu.java.);//通过类加载器得到Class对象System.out.println(clazz4);3.5.方式5基本数据类型获取Class类对象 1.基本数据类型int\char\boolean\float\double\byte\long\short按照如下方式可以获取到Class类对象Class cls 基本数据类型.class 3.6.方式6基本数据类型对应的包装类 1.基本数据类型对应的包装类可以通过.type得到Class类对象Class cls 包装类.type //5. 基本数据(int, char,boolean,float,double,byte,long,short) 按如下方式得到Class类对象ClassInteger integerClass int.class;ClassCharacter characterClass char.class;ClassBoolean booleanClass boolean.class;System.out.println(integerClass);//int//6. 基本数据类型对应的包装类可以通过 .TYPE 得到Class类对象ClassInteger type1 Integer.TYPE;ClassCharacter type2 Character.TYPE; //其它包装类BOOLEAN, DOUBLE, LONG,BYTE等待System.out.println(type1);//下面两个输出的值是一样的System.out.println(integerClass.hashCode());System.out.println(type1.hashCode());4、获取Class类的实例对象 4.1.哪些类型可以作为Class类的实例对象 1.外部类成员内部类静态内部类局部内部类匿名内部类2.interface接口3.enum:枚举4.annotation注解6.基本数据类型7.void8.Class本身 4.2.编码测试 package com.hspedu.reflection.class_;import java.io.Serializable;/*** 演示哪些类型有Class对象*/ public class AllTypeClass {public static void main(String[] args) {ClassString cls1 String.class;//外部类ClassSerializable cls2 Serializable.class;//接口ClassInteger[] cls3 Integer[].class;//数组Classfloat[][] cls4 float[][].class;//二维数组ClassDeprecated cls5 Deprecated.class;//注解ClassClass cls6 Class.class;//注解//枚举ClassThread.State cls6 Thread.State.class;ClassLong cls7 long.class;//基本数据类型ClassVoid cls8 void.class;//void数据类型ClassClass cls9 Class.class;//System.out.println(cls1);System.out.println(cls2);System.out.println(cls3);System.out.println(cls4);System.out.println(cls5);System.out.println(cls6);System.out.println(cls7);System.out.println(cls8);System.out.println(cls9);} }1.2.理解java.lang.Class类 1.Class也是类因此也继承Object类 在Object类中定义了方法public final Class getClass()这个方法将被所有子类继承。public final Class getClass()这个方法返回值的类型是一个Class类此类是Java反射的源头针对任何你想动态加载、运行的类唯有先获得相应的Class对象。实际上所谓反射从程序的运行结果来看也很好理解即可以通过对象反射求出类的名称 2.Class类对象不是new出来的只能是系统创建出来的 通过debugger发现反射也是通过ClassLoad类加载Class对象 3.对于某个类的Class类对象在堆内存中只有一份因为类只加载一次 一个Class对象对应的是一个加载到JVM中的一个.class文件 4.每个类的实例对象都会记得自己是由哪个Class实例对象运行时类所生成的5.通过一系列的API和Class类的实例对象可以完整的得到一个类的完整结构 6.Class对象是存放在堆中的类的字节码二进制数据是存放在方法区的有的地方称之为类的元数据包括方法代码变量名方法名访问权限等
http://www.hkea.cn/news/14574103/

相关文章:

  • 水务局政务网站建设工作总结邯郸网络科技公司电话
  • 外国人做那个视频网站定做app需要多少钱
  • 网站建设招聘简介山西企业网站模板建站平台
  • 建设市民中心网站做盗号网站
  • 网站建设公司发展方向及趋势百度地图网页版进入
  • 佛山哪有网站建设公司工商注册名字查询系统
  • 个人网站做哪种类型做招聘海报的网站
  • xml网站地图格式上海招聘信息最新招聘2022
  • 南昌房产网站建设dw做网站详细教程
  • 什么网站做淘宝素材比较好图表生成网站
  • 购物网站开发 书籍潍坊建设公司网站
  • 无锡做网站好三个年轻人做电影网站800万
  • 北京建设银行招聘网站网盘网站建设
  • 自适应网站建设推荐工商网核名查询
  • seo网站推广与优化方案加盟招商网站建设
  • 网站设计流程步骤一个专门做ppt的网站
  • 企业网站建设进什么科目核算如何设计一款app
  • 网站开发可选择的方案有精品资料网如何免费下载
  • 做网络写手赚钱的网站网站毕业设计任务书
  • 如何用js做网站建筑人才网 珠海
  • 个人网站模板 html5成都h5模板建站
  • nginx wordpress 伪静态设计型网站自带优化
  • 兰州做高端网站十大新媒体平台有哪些
  • 美术馆网站建设方案wordpress建站比较
  • wordpress无广告视频网站跨境电商平台是什么
  • 网站开发外包售后维护合同要钱吗
  • 代理登陆网站百度广告投放价格
  • 在那个网站找模具做wordpress推广网站插件
  • 广东智能网站建设费用二级菜单网站如何做伪静态
  • 外贸网站制作物流公司简介模板