java中的反射机制和javaBean
反射
反射:就是通过一个类加载进方法区时加载到栈内存中的Class字节码文件对这个类进行解剖
通过反射可以获取到一个类的构造方法,成员方法,成员变量
反射将一个类的各个部分映射成相应的类
反射获取构造方法
Class类中方法
Constructor<?>[] getConstructors() 返回当前字节码文件对象的所有public修饰的构造方法
Constructor<T> getConstructor(Class<?>...parameterTypes)返回指定了参数的构造方法(因为是在字节码文件中去找,所以参数也是字节码文件)
参数
Constructor 用来描述构造方法的类 返回回来的就是Constructor对象
Class<?>...parameterTypes 可变参数 是构造方法参数类型 如果参数不写 则返回空参构造方法
Constructor
T newInstance(Object...initargs) 运行构造方法创建对象
返回值T 是泛型 没有泛型就是Object 类型
参数 为构造方法要使用的实际参数 参数不写则运行的是空参构造方法(方法运行的时候传入的参数就是正常的参数)
1.获取字节码文件对象
2.通过字节码文件对象获取构造方法对象
3.通过构造方法对象调用方法运行构造方法
反射获取对象的快捷方式
Class类的方法
T newInstance() 创建此Class对象所表示的类的一个新实例
前提 必须有空参构造 空参构造必须public修饰
1.获取字节码文件对象
2.通过字节码文件字节调用newInstance()创建对象
反射获取成员变量(因为成员变量都是私有,所以很少用)
Class类中方法
//因为属性名不能重复,所以只用传参数名就可以得到Field
Field getField(String name) 返回指定变量名的成员变量
Field[] getFields() 返回所有成员变量
Field类中的方法
void set(Object obj, Object value) 为指定对象的成员变量赋值 obj为要赋值的对象,value为要赋的值
Object get(Object obj) 返回此对象该属性的值
1.获取字节码文件对象
2.通过字节码文件对象获取字段对象
3.调用set方法为字段赋值 注意 需要给定一个对象 可以通过快捷方式创建对象
暴力反射:
如果需要得到字节码中私有的属性或者方法
Field[] getDeclaredFields()
Method[] getDeclaredMethods()
同样可以得到私有的指定属性或者方法
Method getDeclaredMethod(String name, Class<?>... parameterTypes
Method[] getDeclaredMethods() 返回该字节码文件中的所有方法,不含构造,不含继承
得到私有的属性或者方法之后,将其设置为反射时取消语言访问检查
void setAccessible(boolean flag)
反射获取成员方法
Class类中方法
Method[] getMehthods 获取所有公共方法(包括继承的)
Method getMehthod(String name, Class<?>...parameterTypes) String.class int.class
获取指定的公共方法
name:方法名
Class<?>...parameterTypes 方法需要的参数(String.class)
1.获取字节码文件对象
2.通过字节码文件对象获取方法对象
3.调用invoke方法运行当前方法,需要对象
java中的泛型属于伪泛型,只在编译的时候有效,可以直接用反射跳过编译时期避开泛型
获取字节码文件的对象
1:类名.class
2:创建该类的实例对象,然后调用getClass() 继承自Object的方法
3:Class.forName("该类所在的地址") 例:Class.forName("java.util.List")
javaBean:封装的一个实体类,有属性,get/set方法,空参构造,实现可序列化接口,一般自己设置序列化ID(防止序列化之后修改类反序列化失败)
java中的反射机制和javaBean的更多相关文章
- 浅说Java中的反射机制(二)
写过一篇Java中的反射机制,不算是写,应该是抄了,因为那是别人写的,这一篇也是别人写的,摘抄如下: 引自于Java基础--反射机制的知识点梳理,作者醉眼识朦胧.(()为我手记) 什么是反射? 正常编 ...
- java中的反射机制在Android开发中的用处
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反 ...
- 浅说Java中的反射机制(一)
在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...
- 【Java基础】java中的反射机制与动态代理
一.java中的反射机制 java反射的官方定义:在运行状态下,可以获取任意一个类的所有属性和方法,并且可通过某类任意一对象实例调用该类的所有方法.这种动态获取类的信息及动态调用类中方法的功能称为ja ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- Java 中的反射机制
JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方法的功能称为ja ...
- 深入理解Java中的反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制. ...
- Java中的反射机制和动态代理
一.反射概述 反射机制指的是Java在运行时候有一种自观的能力,能够了解自身的情况为下一步做准备,其想表达的意思就是:在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法:对于任意一个对象 ...
- Java中的反射机制Reflection
目录 什么是反射? 获取.class字节码文件对象 获取该.class字节码文件对象的详细信息 通过反射机制执行函数 反射链 反射机制是java的一个非常重要的机制,一些著名的应用框架都使用了此机制, ...
随机推荐
- 2018——2019 20165239Exp9 Web安全基础
Exp9 Web安全基础 一:基础问题回答 (1)SQL注入攻击原理,如何防御 •原理:它是利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入恶意SQL语 ...
- 12.RabbitMQ多机集群
配置两台Linux CentOS 6.7虚拟主机 CentOS6.7下载地址 https://pan.baidu.com/s/1i5GPg9n 安装视频下载 https://pan.baidu.c ...
- CSS:CSS 尺寸 (Dimension)
ylbtech-CSS:CSS 尺寸 (Dimension) 1.返回顶部 1. CSS 尺寸 (Dimension) CSS 尺寸 (Dimension) 属性允许你控制元素的高度和宽度.同样,它允 ...
- Navicat创建事件,定时更新数据库
一.新建事件 二.在定义里编写要更改的SQL语句 如果SQL语句有多条,需要将SQL语句放在begin...end中 begin update student set num = '0'; updat ...
- Codeforce 1182B Plus from Picture
题目链接:http://codeforces.com/problemset/problem/1182/B 题意:检查图中 * 形成的是否是唯一的十字. 思路:dfs找到十字的中心,反向消除十字,最后检 ...
- vue组件通信之非父子组件通信
什么顺序不顺序的.. 先来说说非父子组件通信. 首先,我们先来了解下vue中的 1.$emit 触发当前实例上的事件,附加参数都会传给监听器回调. 2.$on 监听当前实例上的自定义事件.事件可以 ...
- Firefox好用的快捷键
1,Alt+D 你可以使用该快捷键直接把光标转到火狐的地址栏.非常有用 2,Ctrl + T和Ctrl + Shift + T Ctrl+T帮你打开一个新标签,Ctrl+Shift+T重新打开上次关闭 ...
- JHipster研究
liquibase工作原理: master.xml用来维护所有变更记录文件引用 changelog文件夹用来保存具体的变更细节 系统启动时会比较master.xml中include的file,应用差异 ...
- swiper实现上下滑动翻页,内置内容页也滚动
如果我猜的没错,是全网(哈哈)比较少的成功解决方案,如需要转载,请声明并转载出处. swiper实现了上下滑动翻页,但是有几个页面的内容显示不完.如果一页显示不完时可以滑动查看,应该怎么做?这个是我多 ...
- 高级Java必看的10本书
1.深入理解Java虚拟机:JVM高级特性与最佳实践 本书共分为五大部分,围绕内存管理.执行子系统.程序编译与优化.高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理. 2. ...