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

官方网站建设建议网易企业邮箱收件服务器主机名

官方网站建设建议,网易企业邮箱收件服务器主机名,重庆市建设施工安全网站,社区团购卖货小程序反射非常强大和有用#xff0c;现在市面上绝大部分框架(spring、mybatis、rocketmq等等)中都有反射的影子#xff0c;反射机制在框架设计中占有举足轻重的作用。 所以#xff0c;在你Java进阶的道路上#xff0c;你需要掌握好反射。 怎么才能学好反射#xff0c;我们需要…反射非常强大和有用现在市面上绝大部分框架(spring、mybatis、rocketmq等等)中都有反射的影子反射机制在框架设计中占有举足轻重的作用。 所以在你Java进阶的道路上你需要掌握好反射。 怎么才能学好反射我们需要弄懂以下几个问题 1.反射是什么 2.反射有什么用 3.反射的实现原理 4.怎么用反射 下面我就针对以上的疑问一一来讲解。 反射是什么 反射是java语言的一个特性它允程序在运行时注意不是编译的时候来进行自我检查并且对内部的成员进行操作。 反射是在运行状态中对于任意一个类都能够知道这个类的所有属性和方法,对于任意一个对象都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。 一句话总结反射就是在运行时才知道要操作的类是什么并且可以在运行时获取类的完整构造并调用对应的方法。 为什么要用反射 Java Reflection功能非常强大并且非常有用比如 获取任意类的名称、package信息、所有属性、方法、注解、类型、类加载器等获取任意对象的属性并且能改变对象的属性调用任意对象的方法判断任意一个对象所属的类实例化任意一个类的对象通过反射我们可以实现动态装配降低代码的耦合度,动态代理等。 怎么使用反射 一般情况下我们通过反射创建类对象主要有两种方式 通过 Class 对象的 newInstance() 方法通过 Constructor 对象的 newInstance() 方法 第一种通过 Class 对象的 newInstance() 方法。 Class clz Class.forName(com.lxx.reflection.Hello); Hello hello (Hello)clz.newInstance();第二种通过 Constructor 对象的 newInstance() 方法 Class clz Class.forName(com.lxx.reflection.Hello); Constructor constructor clz.getConstructor(); Hello hello (Hello)clz.newInstance();通过 Constructor 对象创建类对象可以选择特定构造方法而通过 Class 对象则只能使用默认的无参数构造方法,下面的代码就调用了一个有参数的构造方法进行了类对象的初始化。 Class clz Class.forName(com.lxx.reflection.Hello); Constructor constructor clz.getConstructor(String.class); Hello hello (Hello)clz.newInstance(hello world);接下来我们就可以通过具体的API调用获取到详细的属性或者方法等详细了。 1、获取类的成员变量的信息 Field[] fields cls.getDeclaredFields();更加详细成员变量获取参考如下 方法用途getField(String name)获取某个公有的属性对象getFields()获取所有公有的属性对象getDeclaredField(String name)获取某个属性对象(public和非public)getDeclaredFields()获取所有属性对象(public和非public) 2、获得类方法 Method[] methods cls.getDeclaredMethods();更加详细方法获取参考如下 方法用途getMethod(String name,Class…? parameterTypes)获取该类某个公有的方法getMethods()获取该类所有公有的方法getDeclaredMethod(String name,Class…? parameterTypes)获取该类某个方法(public和非public)getDeclaredMethods()获取该类所有方法(public和非public) 3、获得构造函数 Constructor[] constructors cls.getDeclaredConstructors();更加详细方法获取参考如下 方法用途getConstructor(Class…? parameterTypes)获取该类中与参数类型匹配的公有构造方法getConstructors()获取该类中所有公有构造方法getDeclaredConstructor(Class…? parameterTypes)获取该类中与参数类型匹配的构造方法getDeclaredConstructors()获取该类所有构造方法 通过以上一个小案例了解了反射的使用但如果你想对反射掌握得更好还需深入理解反射背后的底层实现原理。 反射工作原理 调用反射的总体流程如下 1、当我们编写完一个Java项目之后每个java文件都会被编译成一个.class文件。 2、这些class文件在程序运行时会被ClassLoader加载到JVM中当一个类被加载以后JVM就会在内存中自动产生一个Class对象。 3、通过Class对象获取Field/Method/Construcor 我们一般平时是通过new的形式创建对象实际上就是通过这些Class来创建的只不过这个class文件是编译的时候就生成的程序相当于写死了给jvm去跑。 反射是什么呢当我们的程序在运行时需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm而是在运行时根据需要才加载。 原来使用new的时候需要明确的指定类名这个时候属于硬编码实现而在使用反射的时候可以只传入类名参数就可以生成对象降低了耦合性使得程序更具灵活性。 反射的应用场景 举个例子我们的项目底层数据库有时是用mysql有时用oracle需要动态地根据实际情况加载驱动类这个时候反射就有用了假设 com.lxx.java.myqlConnectioncom.lxx.java.oracleConnection这两个类我们要用。 这时候我们在使用 JDBC 连接数据库时使用 Class.forName()通过反射加载数据库的驱动程序如果是mysql则传入mysql的驱动类而如果是oracle则传入的参数就变成另一个了。 Spring 框架的 IOC动态加载管理 BeanSpring通过配置文件配置各种各样的bean你需要用到哪些bean就配哪些spring容器就会根据你的需求去动态加载你的程序就能健壮地运行。 还有Spring AOP动态代理功能都和反射有关系。 除此之外还有很多框架mybatis、dubbo、rocketmq等等都会用到反射机制。
http://www.dnsts.com.cn/news/138733.html

相关文章:

  • 上海市城乡建设管理局网站怎么新建网站
  • 邢台网站制作平台大学生做家教比较好的网站
  • 响应式和非响应式网站太太猫代理网址
  • 做pc端网站价格网站的优化推广方案
  • 扬州做网站的价格工程平台公司是什么意思
  • 一流的网站建设与优化在线涨粉平台
  • 简单个人网站制作流程网站备案登记信息
  • 天猫折扣店网站建设wordpress使用七牛云
  • 常见的网站建设类型都有哪些网页设计学校模板
  • 杭州网站制作公司排名wordpress 手动更新
  • 如何看网站做没做推广php网站开发经理招聘
  • 北京燕华工程建设有限公司网站建行互联网站
  • 如何规划一个外贸网站广州做网站设计
  • 国外做旅游攻略的网站公关公司都有哪些职位
  • 信用网站建设成效谷歌网站的主要内容
  • 极路由做网站外贸网站建设昆明
  • 茂名网站制作推广网络运维工程师需要掌握的哪些技能
  • 网站关闭模板外包公司好么
  • 如何自己建一个网站服务类网站建设策划书
  • 服装网站建设项目维护与评价书莒县住房和建设局网站
  • 网站浏览器兼容性问题免费推广的途径
  • 网站建设的三网合一有没有好网站推荐
  • 个人网站案例企业微信app下载安装官方最新版
  • 佛山本地网站建设国外永久免费服务器
  • 自己建设的网站有管理后台的登录汶上做网站
  • 建设网站所采用的技术温州网站设计制作课程
  • 湖南做网站 联系磐石网络怎么登录已注册的网站
  • 深圳建设网站制作公司国外黄冈网站推广软件
  • 交互 网站付网站建设费分录
  • 受欢迎的常州做网站有做外贸的平台网站吗