博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java反射
阅读量:4648 次
发布时间:2019-06-09

本文共 1006 字,大约阅读时间需要 3 分钟。

一.为什么使用反射(Reflection)

目的: 写通用性的代码 例如框架

需求: 写一个方法 该方法可以接收"任意类型"的对象 该方法的功能是展示对象的绝活

 

输入参数: Object

返回值: void

功能: 展示一下绝活

A公司的程序员
public void test(Object obj){

if(学生){

Student s = (Student)obj;
s.study();
}else if(老师){
Teachet t = (Teacher)obj;
t.teach();
}else if(凹凸曼){
凹凸曼 t = (凹凸曼)obj;
t.打小怪兽();
}else if(厨师){
厨师 t = (厨师)obj;
t.cook();
}

}

 

其他公司的用户使用

只能兼容学生、老师、凹凸曼三种类型, 用户每加一个需求,例如加一个厨师, test就需要发生改变

如果用户需求一变,框架的代码也要随着升级的话,这样的代码是不是弱爆了!

 

问题: 开发框架的程序员 不知道以后的用户 如何使用,传入什么类型的对象以及对象到底有哪些方法,

换句话说 编译的时候 不能够推断 运行的时候 到底传入哪种类型的对象 以及对象有哪些方法...

编译期间决定不了,只能在运行的时候 通过某种手段 获取出该对象 到底有哪些方法 从而调用该对象的指定方法

使用反射可以解决!!

 

二. Class类的对象

 

每一个类 在 第一次使用的时候 需要进行类加载 ,类加载的同时 会在堆中 产生该类所对象的Class对象

Student类 Student类的Class对象

Teacher类 Teacher类的Class对象

这个Class对象是类的一面镜子,通过该对象可以知道 该类有哪些构造函数、哪些属性、哪些方法....

从而使用Class对象来创建该类的对象、访问属性、调用方法

 

第一次使用类

1.使用该类创建对象的时候

2.类名.静态方法

3.类名.属性

 

*****************************************如何使用反射********************************************

一.如何获得类所对应的Class对象

二.使用反射创建对象

 

转载于:https://www.cnblogs.com/MrTanJunCai/p/9906853.html

你可能感兴趣的文章
bzoj 1115 转换+阶梯博弈
查看>>
URAL - 1427-SMS
查看>>
在VIM中添加行号的方法
查看>>
const用法:const *char;char *const;const char *const 区别
查看>>
【编译原理】c++实现自上而下语法分析器
查看>>
C基础复习
查看>>
套接字
查看>>
QT中使用中文
查看>>
Python在Windows上安装配置测试
查看>>
Springboot使用session容器存取短信验证码
查看>>
scala Wordcount
查看>>
React Native移动开发实战-3-实现页面间的数据传递
查看>>
【AngularJS】【02】AngularJS应用骨架
查看>>
mssql 时间维度表
查看>>
python爬虫scrapy之rules的基本使用
查看>>
写会议纪要也是需要水平滴
查看>>
XML
查看>>
Game HDU - 3389 (博弈论)
查看>>
Docker——入门实战
查看>>
UIView
查看>>