文档章节

Java 反射简析

引鸩怼孑
 引鸩怼孑
发布于 2016/05/03 09:20
字数 667
阅读 76
收藏 3

  一直以来,多少Java编程人员对于Java的反射讳莫如深,其实简单粗暴的说,所谓反射就是文件与Java对象之间的转换而已。

我们编写的Java后缀的文件,经过编译之后就成为class后缀的文件了,jvm对其进行登记。

反射的时候,jvm按照花名册,加载所有相关的class文件。这时候,文件里面就是代码,就是对象。

加载之后呢,按照Java规则,将其还原为我们熟悉的Java文件,这时候这个class文件就从编译状态变成了编程状态。

实际反射的根本就是文件io。在这个基础之上,必须理解的是,Java的一切皆是面向对象,连基本数据类型都有对象包装类。


 1.获得一个类的类模版

 Class c = 对象名.getClass();

 Class c = Class.forName(包名+类名);  ---常用

我们也可以根据模版来获取其对应的类对象: c.newInstance();

上面就是从jvm加载的花名册里面获取到class文件,然后调用面向对象的方法,生成对象,class就是编译后的class文件对应的对象类型。

重点:Class是一个对象。

  2.根据类模版获取类的信息:

 获取类的属性: 

Filed----c.getFiled(String pname)  获得指定属性(公共字段)

Filed----c.getDeclearedFiled(String pname)  获得指定属性(所有权限字段)

Filed[]----c.getFileds()  获得所有属性(公共字段)

Filed[]----c.getDeclearedFileds()  获得所有属性(所有权限字段)

上面是基于对象获取属性与字段。

重点:属性本身也是一个对象。

获取类的方法:

Method----c.getMethod(String methodName,class[] params)  获得指定方法(公共方法)

Method----c.getDeclearedMethod(String methodName,class[] params)  获得指定方法(所有方法)

Method[]----c.getMethods()  获得所有方法(公共方法)

Method[]----c.getDeclearedMethods()  获得所有方法(所有权限方法) 

获取类的方法,一样是基于对象操作;

重点:方法本身也是对象。

所以,必须深刻的理解Java的面向对象的彻底与干脆。

所以反射的本质,就是从Java格式的对象文件到编译的class文件,然后从编译的class文件到可编程的Java文件,我们看得懂的对象文件。编译的过程就是文件重写,从一直规则到另一种规则。反射的时候,就是通过IO进行反向规则还原写。还原的过程,一切都是从文件到对象的过程。理解类是对象,属性是对象,方法是对象。


© 著作权归作者所有

引鸩怼孑
粉丝 44
博文 208
码字总数 16947
作品 0
南京
项目经理
私信 提问
【翻译】C#编程语言和JAVA编程语言的比较(上)

【翻译】C#编程语言和JAVA编程语言的比较(上) 原文地址:http://www.25hoursaday.com/CsharpVsJava.html 简介 C#语言是一门面向对象的语言,开发者可以使用C#和微软.NET平台快速构建各种应...

fbf
2013/08/13
306
0
云妹总结了一些最最最常见的Java面试题供大家参考

云妹导读:String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性 String类中使用字符数组:private final cha...

阿里云科技快讯
2018/08/17
0
0
Java finalize方法

《JAVA编程思想》: java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。 (1).对象不一定会被回收。 (2).垃圾回收不是析构函数。 (3).垃圾回收只与内存有关。 (4)....

清风伴月
2017/10/22
46
0
Java并发之ThreadLocal使用和源码分析

本篇文章首先给出了ThreadLocal常用的方法,并举例来说明ThreadLocal的使用。然后分析了ThreadLocal的源代码中的get()方法,初始化方法,ThreadLocalMap的实现等来理解ThreadLocal的原理。 ...

第四单元
2018/12/24
0
0
【免费】全网独家:详解Java反射机制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/silencezwm/article/details/85115991 【免费】全网独家:这是一份非常值得珍藏的Android知识体系!!! 本文...

silencezwm
2018/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[top]cpu内存

%Cpu(s): 96.0 us用户进程整理cpu的占比,按整个cpu算。 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND ......

Danni3
6分钟前
2
0
JavaScript权威指南笔记2

第二章、词法结构 1、字符集 JavaScript程序:Unicode字符集编写 Unicode:ASCII和Latin-1的超集,支持所有在用的语言。 ECMAScript 3要求JavaScript的实现必须支持Unicode 2.1及后续版本 EC...

_Somuns
14分钟前
4
0
数据安全管理:RSA算法,签名验签流程详解

本文源码:GitHub·点这里 || GitEE·点这里 一、RSA算法简介 1、加密解密 RSA加密是一种非对称加密,在公开密钥加密和电子商业中RSA被广泛使用。可以在不直接传递密钥的情况下,完成加解密操...

知了一笑
54分钟前
7
0
Podman 使用指南

> 原文链接:Podman 使用指南 Podman 原来是 CRI-O 项目的一部分,后来被分离成一个单独的项目叫 libpod。Podman 的使用体验和 Docker 类似,不同的是 Podman 没有 daemon。以前使用 Docker...

米开朗基杨
今天
6
0
拯救 项目经理个人时间的5个技巧

优秀的项目经理都有一个共同点,那就是良好的时间管理能力。专业的项目经理会确保他们的时间投入富有成效,尽可能避免时间浪费。 时间管理叫做GTD,即Getting Things Done——“把事情做完”...

Airship
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部