没有合适的资源?快使用搜索试试~ 我知道了~
反射是框架设计的灵魂,只有学好了反射,才能设计出好的框架 一.反射的概述 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能就是Java语言的反射机制.简单来说,就是反射可以帮助我们在动态运行的时候,对于任意一个类,可以获得其所有方法,所有的变量(是所有的!包括私有!) 反射的作用 获取某些类的一些变量,调用某些类的私有方法.(举个栗子,例如在Android开发中我们可以用来开启WiFi热点,调用WifiManager中的setWifiApEnabled()方法) 增加代码
资源详情
资源评论
资源推荐
一文了解一文了解JAVA反射反射(超详尽超详尽!)
反射是框架设计的灵魂反射是框架设计的灵魂,只有学好了反射只有学好了反射,才能设计出好的框架才能设计出好的框架
一一.反射的概述反射的概述
Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方
法的功能就是Java语言的反射机制.简单来说,就是反射可以帮助我们在动态运行的时候反射可以帮助我们在动态运行的时候,对于任意一个类对于任意一个类,可以获得其所有方法可以获得其所有方法,所有的变量所有的变量(是所有的是所有的!包括私有包括私有!)
反射的作用反射的作用
获取某些类的一些变量,调用某些类的私有方法.(举个栗子,例如在Android开发中我们可以用来开启WiFi热点,调用WifiManager中的setWifiApEnabled()方法)
增加代码的灵活性.(很多主流框架都使用了反射技术,像ssm框架都采用两种技术xml做配置文件+反射技术)
而我们要想使用反射而我们要想使用反射,就要对反射的常用对象有个基本了解就要对反射的常用对象有个基本了解
Class
Class类的实例表示正在运行的Java应用程序中的类和接口类和接口
Constructor
关于类的单个构造方法单个构造方法的信息以及对它的访问权限
Field
Field 提供有关类或接口的单个字段单个字段的信息,以及对它的动态访问权限.
Method
Method 提供关于类或接口上单独某个方法单独某个方法的信息
反射在内存中的样子大概长这样
这是一个简单的Animal类,这个Animal.java文件,想要被执行的话,首先会被编译成Animal.class文件.而Animal.class想要被执行的话,就会被类加载器加载到JVM中执行,JVM就会
将它加载到内存,而加载之后,我们的字节码文件Animal.class在内存中也会有一个对象的表示,别忘了Java语言有句话咋说的,“万事万物,皆为对象”.而.class文件在内存中的对象就
是Class对象,所以说获得了获得了Class,才能获得它的构造方法才能获得它的构造方法,属性以及方法属性以及方法,相对应的 构造方法在 内存中 对应的是Constructor对象, 属性 对应的就是 Field,而方法呢 对应的就是
Method,但是 不管我们想要获得构造方法,属性 还是 方法, 前提都是我们先获得Class对象
二二.Class类类
Java中java.lang.Class类用于表示一个类的字节码(.class)文件
如何得到某个class文件对应的Class对象
已知类和对象的情况下已知类和对象的情况下
类名.class
对象.getClass() — Object 类提供
未知类和对象的情况下未知类和对象的情况下
Class.forName(“包名.类名”)
Class类代表某个类的字节码,并提供了加载字节码的方法:forName(“包名.类名”),forName方法用于加载类字节码到内存中,并封装成一个Class对象.
package JavaReflectTest;
public class Animal {
public String name;
private int id;
public Animal(){
System.out.println("我是无参构造方法");
}
public Animal(int id,String name){
this.setId(id);
this.setName(name);
System.out.println("我是有参构造方法");
}
public void eat(){
System.out.println("我是公有方法");
}
private void drink(){
System.out.println("我是私有方法");
}
private void play(String name,String sex){
System.out.println("我是私有带参方法");
}
weixin_38564085
- 粉丝: 5
- 资源: 938
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0