文章目录

  • 一.概念
    • 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反射机制--反射概述相关推荐

  1. Java反射机制(反射Field,Method,Constructor,资源绑定器)

    目录 反射机制 1.反射机制的作用 2.反射机制的相关类在哪个包下 3.反射机制的相关类有哪些 获取Class的三种方式 通过反射实例化对象 通过读属性文件实例化对象 只让静态代码块执行可以使用for ...

  2. Java反射机制的基本概念与使用_Java进阶之reflection(反射机制)——反射概念与基础...

    反射机制是Java动态性之一,而说到动态性首先得了解动态语言.那么何为动态语言? 一.动态语言 动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化.比如常见 ...

  3. 秒懂系列,深入理解Java反射机制

    文章目录 深入理解Java反射机制 一.Java反射概述 二.Java创建对象思想传递 三.类对象 3.1 类对象和类的对象 3.2 三种获取类对象的方法 四.Class对象的常用方法 4.1 获取成 ...

  4. 【javase-improved】第二篇:Java反射机制

    文章目录 一.JAVA反射机制的概述 (1) 基于代码对于反射的理解 (1)通过反射访问类(以Person为例)内部成员 二.动态语言和静态语言的区分 三.Java 反射机制功能研究 四.Class类 ...

  5. 理解Java反射机制

    理解Java反射机制 1. 概述 2. 反射原理 3. 反射的优缺点 4. 反射的用途 5. 反射相关的类 5.1 Constructor 5.2 Field 5.3 Method 5.4 Class ...

  6. java 反射 工厂_JAVA反射机制、工厂模式与SPRING IOC

    ABSTRACT Spring的IOC(控制反转)是Spring框架的灵魂,有了它才有了Spring的很多其他的灵活的特性.使用 Spring 开发项目时,控制层.业务层.DAO 层都是通过 IoC ...

  7. 关于java反射机制(基础篇)

    关于java的反射机制,有一些初步的理解,但是依然存在几点困惑.先将自己理解的部分分享其下,并提出困惑,之后完善. 1. java反射机制是什么? 从两个概念切入:反射机制和java反射机制 ①反射机 ...

  8. JAVA Reflection(反射机制)

    Java 反射机制 反射机制简介 反射机制应用示例 简单的Ioc实现 代理模式 Java动态代理 简单的Aop实现 "程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言" ...

  9. Java语言基础-反射机制、正则表达式

    反射机制 反射机制是在运行状态中,对于任意一个类,都能知道这个类(class文件)的所有属性和方法. 对于任意一个对象,都能调用它的任意一个方法和属性. 这种动态获取信息以及动态调用对象的方法的功能称 ...

  10. 反射机制讲解,js和java反射机制的区别。

    JAVA为什么要用反射创建对象_为什么几乎所有的Java框架都要用到反射机制,她的魅力在哪里?..._18903290970的博客-CSDN博客说起Java的反射机制,大家应该不陌生吧,她是Java语 ...

最新文章

  1. 微服务架构下的测试之道
  2. 我所理解的 Block
  3. 计算机学院许斌副院长,马鞍山职业技术学院院长姚国成、马鞍山市卫校校长许斌一行来访我院...
  4. eslint规范_规范统一前端代码风格
  5. 如何利用tcpdump抓包?
  6. fdtd中时间监视器怎么放_利用FDTD软件仿真拓扑光子(六)-单向传播仿真与软件设置...
  7. mysql like 数字结尾_MySQL中的Like和正则表达
  8. 互联网浏览本地html,如何加载本地HTML文件,如果没有互联网连接
  9. 【实习之T100开发】T100程序功能代码积累
  10. 汉字字符内码查询_计算机等级考试查询系统
  11. 单片机蜂鸣器音乐c语言程序,51单片机 使用蜂鸣器播放简单音乐
  12. Linux下载GEO数据,最简单的IGS精密星历等数据下载方法PPT
  13. python文档自动翻译
  14. Redis全面实战教程
  15. android js桥接,聊一聊桥接(JSBridge)的原理(下)
  16. Ultra Recal 一款DIY的个人管理软件
  17. VSCODE 简单配置用户代码片段
  18. 中关村创业大街是贵重金属垃圾场,我捡到一只产品经理
  19. 有5家衣服专卖店,每家最多购买3件,最多5家衣服专卖店,每家最多购买3件
  20. 项目管理具有的基本特点

热门文章

  1. 推送MobPush-API说明
  2. 7-8-无向图的关节点-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
  3. 我选择 wxWidgets 而不是 Qt 作为图形用户界面框架的一些想法
  4. [zz]世界第一只计算机bug和Debug
  5. eclipse的控制台显示有问题,关闭Limit console output
  6. wordpress建立二级导航菜单
  7. yudian温控表a1温度怎么补偿_贴片电容怎么确定型号
  8. C程序设计--结构体+单向链表
  9. phpstudy不执行php文件,phpstudy运行时突然无法报错
  10. elasticsearch使用场景_Elasticsearch功能、适用场景及特点