java反射知识
java反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:
对于任意一个对象,都能够调用它的任意一个方法和属性;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
动态的获取类中的信息,就是java反射
java反射的作用示意图(可以对已经定义的代码利用配置文件进行扩展,不用修改源代码,源文件提供了接口,开发者可以编写实现接口的类,类中存在处理请求和应答方式,再进行配置,即可达到原程序的扩展,)

package reflect.test; import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import useclass.Person; public class reflectDemo {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SecurityException, IllegalArgumentException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {
getFieldDemo();//获取字段
creatNewClass();//根据class文件创建对象
creatNewClass_2();//有有参数的构造方法实例化
}
public static void getFieldDemo() throws ClassNotFoundException, SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException, InstantiationException {
Class cla=Class.forName("useclass.Person");
Field f=null;//cla.getField("age");
f=cla.getDeclaredField("name");
//对私有字段的访问取消权限检查,暴力访问
f.setAccessible(true); Object obj=cla.newInstance();
f.set(obj,"小强");//把名字设置为小强
Object o=f.get(obj);
System.out.println(o);
}
public static void creatNewClass_2() throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
/*
* 当获取指定名称对应类中的所体现的对象时,
* 而该对象初始化不使用空参数构造,应该先获取到该构造函数
* 通过字节码文件对象即可完成
* 方法是:getConstructor(paramterTypes);
*/
String name="useclass.Person";
Class cla=Class.forName(name);//得到class文件
Constructor con=cla.getConstructor(String.class,int.class);//得到指定参数构造函数
Object obj=con.newInstance("小强",32);//用指定参数构造函数实例化
System.out.println(cla.getFields());
}
public static void creatNewClass() throws ClassNotFoundException, InstantiationException, IllegalAccessException{
//早期:new的时候,先根据被new的类的名称找寻该类的字节码文件,并加载进内存,
//并创建该字节码文件对象,并接着创建该字节文件的对应的Person对象
useclass.Person p=new useclass.Person(); //现在:
String name="useclass.Person";
//找寻该名称类文件,并加载进内存,,并产生Class对象
Class cla=Class.forName(name);
//产生该类的对象
Object obj=cla.newInstance();//获取带参数的构造函数,并实例化 } }
java反射知识的更多相关文章
- 云笔记项目-Java反射知识学习
在云笔记项目中,补充了部分反射的知识,反射这一部分基础知识非常重要,前面学习的框架Spring和MyBatis读取xml配置文件创建对象,以及JDBC加载驱动等都用了反射,但只知道有这个东西,具体不知 ...
- java反射知识相关的文章
整理的反射相关的文章: (1).通俗理解反射(知乎):学习java应该如何理解反射? (2).关于反射比较深入的博文地址:深入解析Java反射(1) - 基础 贴出我反射调用代码:(craw,dept ...
- 学习Spring必学的Java基础知识(1)----反射(转)
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...
- 学习Spring必学的Java基础知识(1)----反射
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩".以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系 ...
- Spring IOC知识java反射
[1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-->Spring AOP :http: ...
- 学习Spring必学的Java基础知识
[1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-->Spring AOP :http: ...
- 主题:学习Spring必学的Java基础知识(9)----HTTP报文
转: 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”.以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些 ...
- Java反射-高级知识掌握
PS:本文就Java反射的高级知识做下汇总,理清在什么情况下,我们应该去使用反射,提供框架的健壮性,ps:xieyang@163.com/xieyang@163.com
- Java反射-中级知识掌握
PS:本文就Java反射常用的中级知识做下汇总和分析/cnxieyang@163.com/xieyang@e6yun.com
随机推荐
- [HDU 1203] I NEED A OFFER!
I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- apache开源项目--kafka
kafka是一种高吞吐量的分布式发布订阅消息系统,她有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能. 高吞吐量:即使是非常普通的 ...
- MySQL锁机制
一.概况MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking):BDB存储引擎采用 ...
- 发布网站,报Access to the path is denied的解决办法
错误: Server Error in '/' Application.---------------------------------------------------------------- ...
- EF架构随心所欲打造属于你自己的DbModel【转】
前言 我们都知道EF可以生成Dbmodel,系统生成的Model有时候并不是我们想要的,如何我们要生成自己的Model,那么久需要我们手动的去修改T4模版,T4是对“Text Template Tra ...
- NOIP2015 子串 (DP+优化)
子串 (substring.cpp/c/pas) [问题描述] 有两个仅包含小写英文字母的字符串 A 和 B.现在要从字符串 A 中取出 k 个 互不重 叠 的非空子串,然后把这 k 个子串按照其在字 ...
- Tsinsen A1516. fx 数位dp
题目: http://www.tsinsen.com/A1516 A1516. fx 时间限制:2.0s 内存限制:256.0MB 总提交次数:164 AC次数:72 平均分:51. ...
- java 小结3 hashcode和equals I/o问题
我需要把星期天看的一些东西记录下来,要不然会忘记. hashCode.equals: 1)每个java对象都有hashCode和equals方法. java的终极类是object类,那么object类 ...
- 最新Blog
应该会长期稳定的 https://b.intmainreturn0.com/
- PAT 1057. Stack (30)
题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1057 用树状数组和二分搜索解决,对于这种对时间复杂度要求高的题目,用C的输入输出显然更好 #i ...