目录

反射

反射相关的类

1. Class类——反射核心类

2. Constructor类——通过反射调用构造方法

破坏封装对象

3. Method类——通过反射调用普通方法

4. Field类——通过反射调用属性


反射

Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够动态调用它的任意方法和属性。

既然能拿到,那么我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。

Person p = new Student();

p的编译时类型就是Person,运行时类型就是Student,运行时明确该引用到底是什么类型就可通过反射机制。

反射相关的类

这四个类在java.lang.reflect包中

1. Class类:反射核心类。使用class关键字,包括数组,包括接口编译后生成的class文件,就对应一个唯一的class对象,由JVM产生,使用这个class对象就可以获取该类的所有信息。

class Student {int age;String name;//...
}

经过 javac Student.java 生成了 Student.class
将JVM启动之后,Student类被加载到JVM之后,就会生成一个全局唯一的Student.class对象,由JVM产生就根据这个对象来反射操作Student类。

2. Field类:反射调用类中的成员 / 类属性。

3. Method类:反射调用类中的成员 / 类方法。

4. Constructor类:反射调用构造方法。

1. Class类——反射核心类

无论要通过反射机制干什么事,首先第一步就是获取该类的class对象(由JVM产生的,全局唯一)。

三种方式:
a. 调用Class.forName(类的全名称,包名.类名)。
b. 调用类名称.class属性。如:Student.class。
c. 通过该类的任意对象的 getClass()方法。


2. Constructor类——通过反射调用构造方法

普通的get只能获取public权限的方法或者属性,getDeclared...()可以获取所有权限的方法或属性。

破坏封装对象

3. Method类——通过反射调用普通方法

通过Method类调用相应方法。

静态方法

成员方法

4. Field类——通过反射调用属性

通过obj对象获取相关属性的值,属性为静态属性,则传入null

通过obj对象修改相关属性的值,若为静态对象,则传入null


Java中反射相关的类相关推荐

  1. 【JAVA系列】Java中的包、类的继承、多态、抽象类与接口

    文章目录 前言 一.包及访问权限 1.什么是包? 2.如何导入包? 3.JDK中常见的包 4.包的访问控制权限 二.继承 1.继承的基本概念 2.继承时方法调用顺序 3.super和this关键字 4 ...

  2. Java中反射的三种常用方式

    Java中反射的三种常用方式 package com.xiaohao.test; public class Test{ public static void main(String[] args) t ...

  3. JAVA中反射的实现过程和作用分别是什么?

    JAVA语言编译之后会生成一个.class文件,反射就是通过字节码文件找到某一个类.类中的方法以及属性等.反射的实现主要借助以下四个类:Class:类的对象,Constructor:类的构造方法,Fi ...

  4. Java中通过代理对类进行修改

    JAVA中的静态代理.动态代理及JDK proxy和CGLIB.Javassist.ASM实践 简介 Java中对已经有的类进行修改,改变或调整其执行,这可以通过代理来实现.Java的class文件是 ...

  5. 《Java并发编程的艺术》——Java中的并发工具类、线程池、Execute框架(笔记)

    文章目录 八.Java中的并发工具类 8.1 等待多线程完成的CountDownLatch 8.2 同步屏障CyclicBarrier 8.2.1 CyclicBarrier简介 8.2.2 Cycl ...

  6. 请说明一下JAVA中反射的实现过程和作用分别是什么?

    请说明一下JAVA中反射的实现过程和作用分别是什么? Java语言编译后形成.class文件,反射就是通过字节码文件找到一个类,类中的方法及属性等.反射的实现主要通过四个类 Class 类的对象 Co ...

  7. Java中反射的实现方式

    Java中的发射机制 所谓反射,是指在运行时状态中,获取类中的属性和方法,以及调用其中的方法的一种机制.这种机制的作用在于获取运行时才知道的类(Class)及其中的属性(Field).方法(Metho ...

  8. Java中的对象和类

    一. OOP中的基本概念     Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP), 它允许设计者将面向对象设计 ...

  9. java中的starts_Java Math类静态double nextAfter(double starts,double direction)示例

    java中的starts 数学类静态double nextAfter(双向启动,双向) (Math Class static double nextAfter(double starts , doub ...

最新文章

  1. oracle归档日志是否启用,oracle归档日志满了,导致无法启动 ORA-03113
  2. Paxos的工程实践
  3. 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例
  4. skywalking告警相关配置
  5. python巡检脚本juniper_JUNIPER设备日常维护巡检命令
  6. HDU 5869.Different GCD Subarray Query-区间gcd+树状数组 (神奇的标记右移操作) (2016年ICPC大连网络赛)...
  7. cemtos7.2搭建samba
  8. robotac属于a类还是b类_所得税A类和B类的区别,什么样的属于B类??
  9. python批处理远程关机脚本,python实现远程通过网络邮件控制计算机重启或关机
  10. spring源码下载以及gradle的详细使用教程
  11. coolpro2 剪切并淡出
  12. QThread 应用浅析
  13. matlab安装matconvnet
  14. Qt FlowLayout升级版
  15. 解决win10家庭版本系统无法远程连接问题
  16. 近来学习的一些东西和思考
  17. 虾皮物流怎么收费?收费标准是什么?
  18. 发布会签到系统_系统开发_创建项目及应用
  19. 两年数据对比柱形图_举个栗子!Tableau 技巧(152):横向对比堆叠柱形图的各部分占比...
  20. Android调用相机预览黑屏app passed NULL surface解决

热门文章

  1. 使用FineBI,轻松搞定汽车金融公司风险指标分析!
  2. window安装Stable-Diffusion-WebUI详细教程
  3. 复星旅文全力打造新一代休闲度假升级产品复游城
  4. 程序员的自我修养之精神内耗
  5. 张一鸣, 9 年前重点在做这两件事
  6. 电脑桌面老是弹出计算机,【已解决】如何快速清除电脑桌面上弹出的广告
  7. gulp + javascript-obfuscator 混淆代码
  8. arXiv的licence怎么选择?
  9. 最好的爱情,是彼此觉得高攀了对方
  10. Python爬取哔哩哔哩今日热门视频实战