首页 / 知识
Java反射
2023-04-11 16:32:00

1、反射机制有什么用?
通过java语言中的反射机制可以操作字节码文件(可以读和修改字节码文件。)
通过反射机制可以操作代码片段。(class文件。)
2、反射机制的相关类在哪个包下?
java.lang.reflect.*;
3、反射机制相关的重要的类有哪些?
类 含义
java.lang.Class 代表整个字节码。代表一个类型,代表整个类。
java.lang.reflect.Method 代表字节码中的方法字节码。代表类中的方法。
java.lang.reflect.Constructor 代表字节码中的构造方法字节码。代表类中的构造方法。
java.lang.reflect.Field 代表字节码中的属性字节码。代表类中的成员变量(静态变量+实例变量)。
注:必须先获得Class才能获取Method、Constructor、Field。
eg.
java.lang.Class:
public class User{
// Field
int no;
// Constructor
public User(){
}
public User(int no){
this.no = no;
}
// Method
public void setNo(int no){
this.no = no;
}
public int getNo(){
return no;
}
}
4、获取Class的三方式
要操作一个类的字节码,需要首先获取到这个类的字节码,怎么获取java.lang.Class实例?
方式 备注
Class.forName(“完整类名带包名”) 静态方法
对象。getClass()
任何类型。class
注:以上三种方式返回值都是Class类型。
5、通过反射实例化对象
对象。newInstance()
1
注:newInstance()方法内部实际上调用了无参数构造方法,必须保证无参构造存在才可以。
否则会抛出java.lang.InstantiationException异常。
eg.
class ReflectTest02{
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
// 下面这段代码是以反射机制的方式创建对象。
// 通过反射机制,获取Class,通过Class来实例化对象
Class c = Class.forName("javase.reflectBean.User");
// newInstance() 这个方法会调用User这个类的无参数构造方法,完成对象的创建。
// 重点是:newInstance()调用的是无参构造,必须保证无参构造是存在的!
Object obj = c.newInstance();
System.out.println(obj);
}
}
6、JDBC重点(Class.forName导致类加载)
如果你只是希望一个类的静态代码块执行,其它代码一律不执行,可以使用:
Class.forName("完整类名");
这个方法的执行会导致类加载,类加载时,静态代码块执行。
|
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为Py对数组使用Python For循环
对数组使用Python For循环,名称,培训,代码,健康,水牛,数组,元素,有用,下面,以上,您可以使用for循环从数组中获取特定元素。假设您有一组水牛bPython网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc用Python爬取百度搜索结果
用Python爬取百度搜索结果,百度,项目,分析,软件,网址,广告,时间,培训,粮食,标题,一、前言众所周知,百度上直接搜索关键字会出来一大堆东西,时常python的应用领域
python的应用领域,数据,分析,网络,工作,代码,人工智能,项目,金融,量化交易,业务,应用领域1:人工智能Python语言是目前公认学习人工智能的基础用Python开发一个简单的猜数字游戏
用Python开发一个简单的猜数字游戏,数字,代码,培训,官网,设备,程序,玩家,注释,内容,游戏,本文介绍如何使用Python制作一个简单的猜数字游戏。Python五大应用领域
Python五大应用领域,数据,分析,人工智能,网站,时代,分析师,第一,工作,网络,培训,1、Linux运维用python实现的测试工具及过程,包含服务器端、客使用Python的toolz库开始函数式编
使用Python的toolz库开始函数式编程,代码,函数,培训,位置,参数,字典,顺序,操作,结果,测试,toolz库允许你操作函数,使其更容易理解,更容易测试代Python之关于高效使用字典的清单
Python之关于高效使用字典的清单,代码,数据,字典,培训,扩大,时报,方式,方法,对象,列表,字典(dict)对象是Python最常用的数据结构,社区曾有人开Python的英语搭配助手应用开发研究
Python的英语搭配助手应用开发研究,信息,设计,网站,在线,代码,环境,数据,分析,时间,培训,基于Python自带的GUI工具包Tkinter来实现窗口视窗设用于业余项目的优秀 Python 库
用于业余项目的优秀 Python 库,数据,工具,项目,信息,培训,系统,地图,下来,工作,管理,1.在数据库中即时保存数据:Dataset当我们想要在不知道最使用Cython为Python编写更快的C扩
使用Cython为Python编写更快的C扩展,代码,时间,意外,工作,指数,培训,系统,整数,噪声,算法,使用Python很有趣,但有时,用它编写的程序可能很慢。