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

Java语法学习反射

Java语法学习反射

大纲

  1. 基本介绍
  2. class的介绍

具体案例

1. 基本介绍

在这里插入图片描述
流程图(程序在计算机的阶段)
在这里插入图片描述

反射的主要的类
在这里插入图片描述
在这里插入图片描述
这个提高效率不大

2. class的介绍

在这里插入图片描述
对于第三点:首先类只会加载一次,得到的class的对象,也只有一个,如果用反射两次得到class的对象,只是名字不同,地址本质上还是一个

常用方法

在这里插入图片描述

 public static void main(String[] args) {String classPath = "reflection.Cat";try {Class<?> aClass = Class.forName(classPath);System.out.println(aClass);//获取这个对象是哪一个类System.out.println(aClass.getClass());//获取运行对象System.out.println(aClass.getPackage().getName());//获取包名System.out.println(aClass.getName());//得到全路径Object obj = aClass.newInstance();//得到对象//进行强转Cat cat = (Cat) obj;System.out.println(cat);Field name = aClass.getField("name");//获取成员(这个是公有)System.out.println(name.get(cat));//获取指定对象的这个属性//通过反射给指定对象属性赋值,遵守访问权限name.set(cat,"花花");System.out.println(name.get(cat));//得到成员的集合,再遍历Field[] fields = aClass.getFields();for (Field field : fields) {System.out.println(field.getName());}//得到构造器Constructor<?> constructor = aClass.getConstructor(int.class,String.class);System.out.println(constructor);} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchFieldException |NoSuchMethodException e) {throw new RuntimeException(e);}}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

public static void main(String[] args) throws ClassNotFoundException {String classPath = "reflection.Cat";//第一种:通过forName获取Class<?> aClass1 = Class.forName(classPath);//第二种:直接获取Class<Cat> aClass2 = Cat.class;//第三种:创建对象后,利用对象获取Cat cat = new Cat();Class<? extends Cat> aClass3 = cat.getClass();//第四种:通过类的加载器来获取ClassLoader classLoader = cat.getClass().getClassLoader();Class<?> aClass4 = classLoader.loadClass(classPath);}

拥有class对象的类

在这里插入图片描述

类加载

在这里插入图片描述
反射是动态加载,在使用时,只有运行执行到这段代码才会进行校验,
其它的静态加载,在编译的时候就会进行校验

http://www.lryc.cn/news/298582.html

相关文章:

  • 【MySQL】操作库 —— 库的操作 -- 详解
  • Rust安装——Win10
  • 【教学类-46-07】20240212立体春字1.0
  • Python语言例题集(003)
  • UE5 播放本地MP3、MP4
  • NLP_“预训练+微调大模型”模式和Prompt/Instruct模式的异同
  • 普通人应该如何使用GPT
  • pycharm像jupyter一样在控制台查看后台变量
  • Ansible command命令模块 这个模块可以直接在远程主机上执行命令,并将结果返回本主机。
  • C语言-3
  • Quartus工程的qsf配置约束文件介绍
  • 【网工】华为设备命令学习(Telnet)
  • 搜索专项---最短路模型
  • 安装PostgreSQL和PostGIS
  • MySQL-----DCL基础操作
  • Unity报错Currently selected scripting backend (IL2CPP) is not installed
  • LeetCode79. Word Search——回溯
  • Linux命令-blkid命令(查看块设备的文件系统类型、LABEL、UUID等信息)
  • 服务治理中间件-Eureka
  • Javaweb之SpringBootWeb案例之异常处理功能的详细解析
  • 苹果Mac键盘如何将 F1 到 F12 取消按Fn
  • linux下ipconfig命令报:command not found 解决方法
  • Android导入其它项目慢,Gradel下载失败,另辟蹊径:使用离线gradle加载,附镜像方式
  • 神经语言程式(NLP)项目的15 个开源训练数据集
  • H5 红色文字抖动网址发布页/引导页源码
  • MacOS - 菜单栏上显示『音量』
  • 深入理解常见的设计模式
  • 服务器解析漏洞及任意文件下载
  • ES6扩展运算符——三个点(...)用法详解
  • 限制资源使用