Java反射机制--反射概述
文章目录
- 一.概念
- 1. Java Reflection
- 2. Java反射机制提供的功能
- 3. 反射相关的主要API:
- 4. Class类
- 二.实例
- 源代码
一.概念
1. Java Reflection
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能操作任意对象的内部属性和方法
2. Java反射机制提供的功能
- 在运行时判断任何一个对象所属的类
- 在运行时构建任意一个类的对象
- 在运行时判断任意一个类具有的成员变量和方法
- 在运行时调用任意一个对象的成员变量和方法
- 生成动态代理
3. 反射相关的主要API:
- java.lang.Class:代表一个类
- java.lang.reflect.Method:代表类的方法
- java.lang.reflect.Field:代表类的成员变量
- java.lang.reflect.Constructor:代表类的构造方法
4. Class类
- 特性
在Object类中定义了下面的办法,此方法被所有的子类继承:
public final Class getClass()
以上方法返回值的类型是一个Class类,此类是Java反射的源头,实际上反射从程序的运行结果也很好理解,即:通过对象反射求出类的名称。
正常方式:引入需要的包类名称⟹\Longrightarrow⟹通过new实例化⟹\Longrightarrow⟹取得实例化对象
反射方式:实例化对象⟹\Longrightarrow⟹getClass()方法⟹\Longrightarrow⟹得到完整的包类名称
二.实例
Person类
package test;public class Person {public String name;private int age;public Person() {super();} public Person(String name) {super();this.name = name;}public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public void show(){System.out.println("This is class of Person");}public void display (String nation){System.out.println("my nation is:"+nation);}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}
测试类
package test;import static org.junit.Assert.*;import java.lang.reflect.Field;
import java.lang.reflect.Method;import org.junit.Test;public class TestReflection {//有了反射,通过反射创建对象,并调用其中的方法@Testpublic void test2() throws Exception {Class clazz=Person.class;//创建class对应的运行时类Person对象Person p=(Person) clazz.newInstance();//调用属性Field f1=clazz.getField("name");f1.set(p, "LiuDEHua");System.out.println(p);Field f2=clazz.getDeclaredField("age");f2.setAccessible(true);f2.set(p, 20);System.out.println(p);//MethodMethod m1=clazz.getMethod("show");m1.invoke(p);Method m2=clazz.getMethod("display",String.class);m2.invoke(p,"CHN");}//在有反射以前//@Testpublic void test1() {Person p=new Person();p.setAge(10);p.setName("Tony");System.out.println(p);p.show();p.display("HK");}}
运行结果
源代码
链接:https://pan.baidu.com/s/1Ra5PaU8kSC_NH_D00GeBVw
提取码:36c8
Java反射机制--反射概述相关推荐
- Java反射机制(反射Field,Method,Constructor,资源绑定器)
目录 反射机制 1.反射机制的作用 2.反射机制的相关类在哪个包下 3.反射机制的相关类有哪些 获取Class的三种方式 通过反射实例化对象 通过读属性文件实例化对象 只让静态代码块执行可以使用for ...
- Java反射机制的基本概念与使用_Java进阶之reflection(反射机制)——反射概念与基础...
反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见 ...
- 秒懂系列,深入理解Java反射机制
文章目录 深入理解Java反射机制 一.Java反射概述 二.Java创建对象思想传递 三.类对象 3.1 类对象和类的对象 3.2 三种获取类对象的方法 四.Class对象的常用方法 4.1 获取成 ...
- 【javase-improved】第二篇:Java反射机制
文章目录 一.JAVA反射机制的概述 (1) 基于代码对于反射的理解 (1)通过反射访问类(以Person为例)内部成员 二.动态语言和静态语言的区分 三.Java 反射机制功能研究 四.Class类 ...
- 理解Java反射机制
理解Java反射机制 1. 概述 2. 反射原理 3. 反射的优缺点 4. 反射的用途 5. 反射相关的类 5.1 Constructor 5.2 Field 5.3 Method 5.4 Class ...
- java 反射 工厂_JAVA反射机制、工厂模式与SPRING IOC
ABSTRACT Spring的IOC(控制反转)是Spring框架的灵魂,有了它才有了Spring的很多其他的灵活的特性.使用 Spring 开发项目时,控制层.业务层.DAO 层都是通过 IoC ...
- 关于java反射机制(基础篇)
关于java的反射机制,有一些初步的理解,但是依然存在几点困惑.先将自己理解的部分分享其下,并提出困惑,之后完善. 1. java反射机制是什么? 从两个概念切入:反射机制和java反射机制 ①反射机 ...
- JAVA Reflection(反射机制)
Java 反射机制 反射机制简介 反射机制应用示例 简单的Ioc实现 代理模式 Java动态代理 简单的Aop实现 "程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言" ...
- Java语言基础-反射机制、正则表达式
反射机制 反射机制是在运行状态中,对于任意一个类,都能知道这个类(class文件)的所有属性和方法. 对于任意一个对象,都能调用它的任意一个方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称 ...
- 反射机制讲解,js和java反射机制的区别。
JAVA为什么要用反射创建对象_为什么几乎所有的Java框架都要用到反射机制,她的魅力在哪里?..._18903290970的博客-CSDN博客说起Java的反射机制,大家应该不陌生吧,她是Java语 ...
最新文章
- 微服务架构下的测试之道
- 我所理解的 Block
- 计算机学院许斌副院长,马鞍山职业技术学院院长姚国成、马鞍山市卫校校长许斌一行来访我院...
- eslint规范_规范统一前端代码风格
- 如何利用tcpdump抓包?
- fdtd中时间监视器怎么放_利用FDTD软件仿真拓扑光子(六)-单向传播仿真与软件设置...
- mysql like 数字结尾_MySQL中的Like和正则表达
- 互联网浏览本地html,如何加载本地HTML文件,如果没有互联网连接
- 【实习之T100开发】T100程序功能代码积累
- 汉字字符内码查询_计算机等级考试查询系统
- 单片机蜂鸣器音乐c语言程序,51单片机 使用蜂鸣器播放简单音乐
- Linux下载GEO数据,最简单的IGS精密星历等数据下载方法PPT
- python文档自动翻译
- Redis全面实战教程
- android js桥接,聊一聊桥接(JSBridge)的原理(下)
- Ultra Recal 一款DIY的个人管理软件
- VSCODE 简单配置用户代码片段
- 中关村创业大街是贵重金属垃圾场,我捡到一只产品经理
- 有5家衣服专卖店,每家最多购买3件,最多5家衣服专卖店,每家最多购买3件
- 项目管理具有的基本特点
热门文章
- 推送MobPush-API说明
- 7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- 我选择 wxWidgets 而不是 Qt 作为图形用户界面框架的一些想法
- [zz]世界第一只计算机bug和Debug
- eclipse的控制台显示有问题,关闭Limit console output
- wordpress建立二级导航菜单
- yudian温控表a1温度怎么补偿_贴片电容怎么确定型号
- C程序设计--结构体+单向链表
- phpstudy不执行php文件,phpstudy运行时突然无法报错
- elasticsearch使用场景_Elasticsearch功能、适用场景及特点