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

建设工程施工合同专属管辖seo点击排名器

建设工程施工合同专属管辖,seo点击排名器,网站开发过程 文档,设计商城网站文章目录 一、初识反射机制1.1 反射机制概述1.2 反射机制概念1.3 Java反射机制提供的功能1.4 反射机制的优点和缺点 二、反射机制相关的 API 一、初识反射机制 1.1 反射机制概述 JAVA 语言是一门静态语言,对象的各种信息在程序运行时便已经确认下来了,内…

文章目录

  • 一、初识反射机制
    • 1.1 反射机制概述
    • 1.2 反射机制概念
    • 1.3 Java反射机制提供的功能
    • 1.4 反射机制的优点和缺点
  • 二、反射机制相关的 API



一、初识反射机制


1.1 反射机制概述

JAVA 语言是一门静态语言,对象的各种信息在程序运行时便已经确认下来了,内部结构是不可变的。所以当程序在运行时,我们是无法获取对象中的信息的,但是Java 语言推出了对应解决办法--反射机制。反射机制可以动态的获取类对象的属性和方法,这便给Java语言添加了一些“灵活性”,使其成为了“准动态语言”。
JAVA 语言是先编译在运行的语言,所以程序中的对象属性在编译期便已经敲定了,不会再发生改变,但是通过反射机制可以实现属性的改变和获取。


1.2 反射机制概念

在这里插入图片描述

JAVA 语言正常想要获取对象一般是通过将类的完整包路径实例化之后获得的。但是通过反射机制的 getClass() 可以通过对象去反向获取类的完整包路径。


1.3 Java反射机制提供的功能

  • 在运行时判断任意一个对象所属的类

  • 在运行时构造任意一个类的对象

  • 在运行时判断任意一个类所具有的成员变量和方法在运行时获取泛型信息

  • 在运行时调用任意一个对象的成员变量和方法

  • 在运行时处理注解

  • 生成动态代理



1.4 反射机制的优点和缺点

  • 优点: 可以实现动态创建对象和编译,体现出很大的灵活性

  • 缺点: 对程序的性能有影响。使用反射基本上是一种解释性操作,相当于给 JVM 去解释一些要求,然后 JVM 通过这个要求去执行相关的操作。这类操作总是慢于直接执行相同的操作。




二、反射机制相关的 API

  • 反射
      动态加载对象。在运行状态中,对于任何一个类,能够获取这个类的所有属性和方法,对于一个对象,能够调用它的的任意一个属性和方法,这种动态获取类的内容和动态调用对象的方法称为反射机制。

  •       通过反射机制相关的API就可以获取任何Java类的包括属性、方法、构造器、修饰符等信息。元素不必在JVM运行时进行确定,反射可以使得它们在运行时动态地进行创建或调用。
          JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中


  • 反射机制相关的 API

    • Class类:代表一个类

      • 常用方法:

        • public static Class<?> forName(String className) : 通过 Class 直接调用,根据传入的类路径加载并将对应的类初始化

        • public Constructor<?>[] getConstructors(): 获取对象中全部的构造函数,存储进 Constructor[] 并将数组返回

        • public Field[] getDeclaredFields(): 获取对象中全部的变量,存储进 Field[] 并将数组返回

        • public Method[] getDeclaredMethods(): 获取对象中全部的方法,存储进 Method[] 并将数组返回

    • Constructor类:代表类的构造方法

      • 常用方法:

        • public T newInstance(Object … initargs): 搭配 Class 类的 getConstructors(),获取对应的构造方法
    • Field类:代表类的成员变量

    • Method:代表类的方法


  • 反射 API 代码示例

    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;/*** 反射*/
    public class reflect {//运行时获取已知名称的类或已有对象相关信息,包括类的方法,属性,父类等信息//JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中int m;public reflect() {System.out.println("无参构造方法");}public reflect(String k) {System.out.println("一个参数构造方法---" + k);}public reflect(String k, Integer v) {System.out.println("两个参数构造方法---" + k + ":" + v);}public void fun1() {System.out.println("无参数成员方法");}public void fun2(String k) {System.out.println("一个参数成员方法---" + k);}public void fun3(String k, Integer v) {System.out.println("两个参数成员方法---" + k + ":" + v);}public static void main(String[] args) throws Exception{//加载并初始化指定的类reflectClass classInfo = Class.forName("com.proxy.reflect");//代表类名是ASystem.out.println("类reflect构造函数如下所示:");Constructor[] constructors = classInfo.getConstructors();for (int i = 0; i < constructors.length; i++) {System.out.println(constructors[i].toString());}//获得类的所有变量System.out.println("\n类reflect变量如下:");Field[] declaredFields = classInfo.getDeclaredFields();for (int i = 0; i < declaredFields.length; i++) {System.out.println(declaredFields[i].toString());}//获得类的所有方法System.out.println("\n类reflect方法如下:");Method[] declaredMethods = classInfo.getDeclaredMethods();for (int i = 0; i < declaredMethods.length; i++) {System.out.println(declaredMethods[i].toString());}//=========================================构造方法===============================//第一种方式//Constructor[] constructors = classInfo.getConstructors();//调用两个参数构造方法constructors[0].newInstance(new Object[]{"Hello",2023});//调用一个参数构造方法constructors[1].newInstance(new Object[]{"Hello"});//调用无参构造方法constructors[2].newInstance();//第二种方式//调用无参构造方法Constructor constructor = classInfo.getConstructor();constructor.newInstance();//调用一个参数构造方法constructor = classInfo.getConstructor(new Class[]{String.class});constructor.newInstance(new Object[]{"Hello"});//调用两个参数构造方法constructor = classInfo.getConstructor(new Class[]{String.class, Integer.class});constructor.newInstance(new Object[]{"Hello", 2023});//=========================================成员方法============================//调用无参构造函数,生成新的实例对象Object obj = classInfo.getConstructor().newInstance();//调用无参成员函数Method method1 = classInfo.getMethod("fun1");//通过实例对象进行方法的实例化method1.invoke(obj);//调用一个参数成员函数Method method2 = classInfo.getMethod("fun2", String.class);method2.invoke(obj, new Object[]{"Hello"});//调用两个参数成员函数Method method3 = classInfo.getMethod("fun3", String.class, Integer.class);method3.invoke(obj, new Object[]{"Hello", 2023});}}
    
  • 执行结果
    在这里插入图片描述

http://www.yayakq.cn/news/310873/

相关文章:

  • 百度网站站长工具城乡建设规划网站
  • 买服务器做网站 镜像选什么农产品网络推广方案
  • 南通技术网站ppt设计大赛
  • 临翔区城乡建设局网站wordpress 修改邮箱
  • 网站建设中 下载第一个做网站的是谁
  • 有做装修效果图赚钱的网站吗工作细胞第一季免费观看
  • 网站模板教程wordpress段落间距
  • 博兴做网站设计制作植物标识牌
  • 江山做网站自助建站系统官方版
  • 周口网站制作公司哪家好做电商需要投入多少钱
  • 最佳外贸英文网站模板做网站时已做好了ps怎么倒入
  • 上海互联网网站建设公司app开发公司 杭州
  • 学做招投标的网站微信公众号电商网站开发
  • 道滘网站建设网站设计方案策划
  • 北京公司网站建设定网站建设专业吗
  • 关于实施公司网站建设的请示北京网站建设企业网站制作
  • 网站建设自助建站青岛做网站大公司有哪些
  • 海口企业建站系统模板什么是手机app
  • 广州网站开发外包深圳全网推广小程序制作
  • 网站首页网址求个网站你明白的 知乎
  • 网站的建设与应用字体设计在线
  • 安居客网站应该如何做下百度安装
  • 怎样做o2o网站网站系统问题解决措施
  • 海外人才招聘网站盈佳国际天天做赢家网站
  • 上海响应式网站开发wordpress主题slcorp破解
  • 做短视频网站用哪家cms网页制作swiper模板
  • 惠州做网站乐云seo轻松上线网店装修工具
  • 河北青山建设集团有限公司网站学习网站建设多少钱
  • 有个网站专做品牌 而且价格便宜百度小程序在哪里打开
  • 中国建设服务信息网站计算机网络技术出来干什么