Java中反射相关的类
目录
反射
反射相关的类
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中反射相关的类相关推荐
- 【JAVA系列】Java中的包、类的继承、多态、抽象类与接口
文章目录 前言 一.包及访问权限 1.什么是包? 2.如何导入包? 3.JDK中常见的包 4.包的访问控制权限 二.继承 1.继承的基本概念 2.继承时方法调用顺序 3.super和this关键字 4 ...
- Java中反射的三种常用方式
Java中反射的三种常用方式 package com.xiaohao.test; public class Test{ public static void main(String[] args) t ...
- JAVA中反射的实现过程和作用分别是什么?
JAVA语言编译之后会生成一个.class文件,反射就是通过字节码文件找到某一个类.类中的方法以及属性等.反射的实现主要借助以下四个类:Class:类的对象,Constructor:类的构造方法,Fi ...
- Java中通过代理对类进行修改
JAVA中的静态代理.动态代理及JDK proxy和CGLIB.Javassist.ASM实践 简介 Java中对已经有的类进行修改,改变或调整其执行,这可以通过代理来实现.Java的class文件是 ...
- 《Java并发编程的艺术》——Java中的并发工具类、线程池、Execute框架(笔记)
文章目录 八.Java中的并发工具类 8.1 等待多线程完成的CountDownLatch 8.2 同步屏障CyclicBarrier 8.2.1 CyclicBarrier简介 8.2.2 Cycl ...
- 请说明一下JAVA中反射的实现过程和作用分别是什么?
请说明一下JAVA中反射的实现过程和作用分别是什么? Java语言编译后形成.class文件,反射就是通过字节码文件找到一个类,类中的方法及属性等.反射的实现主要通过四个类 Class 类的对象 Co ...
- Java中反射的实现方式
Java中的发射机制 所谓反射,是指在运行时状态中,获取类中的属性和方法,以及调用其中的方法的一种机制.这种机制的作用在于获取运行时才知道的类(Class)及其中的属性(Field).方法(Metho ...
- Java中的对象和类
一. OOP中的基本概念 Java的编程语言是面向对象的,采用这种语言进行编程称为面向对象编程(Object-Oriented Programming, OOP), 它允许设计者将面向对象设计 ...
- java中的starts_Java Math类静态double nextAfter(double starts,double direction)示例
java中的starts 数学类静态double nextAfter(双向启动,双向) (Math Class static double nextAfter(double starts , doub ...
最新文章
- oracle归档日志是否启用,oracle归档日志满了,导致无法启动 ORA-03113
- Paxos的工程实践
- 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例
- skywalking告警相关配置
- python巡检脚本juniper_JUNIPER设备日常维护巡检命令
- HDU 5869.Different GCD Subarray Query-区间gcd+树状数组 (神奇的标记右移操作) (2016年ICPC大连网络赛)...
- cemtos7.2搭建samba
- robotac属于a类还是b类_所得税A类和B类的区别,什么样的属于B类??
- python批处理远程关机脚本,python实现远程通过网络邮件控制计算机重启或关机
- spring源码下载以及gradle的详细使用教程
- coolpro2 剪切并淡出
- QThread 应用浅析
- matlab安装matconvnet
- Qt FlowLayout升级版
- 解决win10家庭版本系统无法远程连接问题
- 近来学习的一些东西和思考
- 虾皮物流怎么收费?收费标准是什么?
- 发布会签到系统_系统开发_创建项目及应用
- 两年数据对比柱形图_举个栗子!Tableau 技巧(152):横向对比堆叠柱形图的各部分占比...
- Android调用相机预览黑屏app passed NULL surface解决