IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Java反射 -> 正文阅读

[Python知识库]Java反射

什么是反射?  

  Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态(或准动态,为啥要说是准动态,因为一般而言的动态语言定义是程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言。)语言的一个关键性质。

获取Class的三种方式

//1.通过类名.Class
Class c = Student.Class;
//2.通过classforName,引号里面是这个类所在的全限定名
Class c = Class.forName("");
//3.通过该类的对象创建
Student student = new Student();
Class c = student.Class;
获取该类及其从父类继承下来的所有公共public属性(c.getFields())
//获取该类的属性(包括继承来的)
Field[] fields = c.getFields();//获取该类及其父类中所有的public属性
     for (Field field : fields) {    //遍历属性
         System.out.println(field.getName());    //获取属性的名字
         System.out.println(field.getType());    //获取属性类型
         System.out.println(Modifier.toString(field.getModifiers()));    //获取属性的访问控制符对应的int值,在将这个int值转换成转换成控制符
        }

获得该类自定义-声明的属性(c.getDeclearFields())

//获取该类自己定义-声明的属性
Field[] declaredFields = c.getDeclaredFields();
for (Field declaredField : declaredFields) {
     System.out.println(declaredField.getName());    //获取属性的名字
     System.out.println(declaredField.getType());    //获取属性类型
}

获得该类定义的所有构造方法(c.getConstructors())

        Constructor[] constructors = c.getConstructors();
            for (Constructor constructor : constructors) {
            System.out.println(constructor.getName());
            System.out.println(constructor.getParameterCount());
            Parameter[] parameters = constructor.getParameters();//获得该构造方法的参数
            for (Parameter parameter : parameters) {
                System.out.println(parameter.getName());
            }
        }


Student student = (Student) constructors[1].newInstance(180,"张三",21);
//得到这个类的构造方法信息后,通过实例化创建一个Student对象
System.out.println(student.getName());

获得该类的普通方法

Method[] methods = c.getMethods();
for (Method method : methods) {
      System.out.println(method.getReturnType());
      System.out.println(method.getName());
}

System.out.println(methods[2].invoke(student, "lisi"));
//通过student这个对象调用这个对象里面的第三个方法,传入一个值是lisi
c.getMethod("study",String.class).invoke(student,"lisi");

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:40:50  更:2021-09-08 10:41:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:26:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码