美文网首页
Java反射

Java反射

作者: MaughamRick | 来源:发表于2018-09-01 13:31 被阅读0次

本节内容学习自《Java核心技术 卷一》

1.是什么?

先说反射库,java.lang.reflection提供了工具集,可以编写动态操作java代码的程序。比如java数组的动态扩展。这个功能被大量运用在JavaBeans中,是java组件的体系结构。

再说反射,能够分析类能力的程序叫做反射

2.它能做什么?

-在运行中分析类的能力,比如查询该类的field,method,constructors

-在运行中查看对象,例如查看对象field中某一项的值,或者写一个toString方法供所有类使用

-实现通用的数组操作代码

-使用Method对象(类似于cpp中的函数指针)

3.Class类

Java运行时系统为所有对象维护一个被称作运行时的类型标识,这个标识跟踪着该对象所属的类,虚拟机利用运行时类型信息选择相应方法执行。保存这些信息的类就是Class。说白了就是说一个类会生成很多该类的对象吧,在运行时每个对象想要知道我可以调用什么方法吧?一个对象复制一份该类的方法列表不现实,肯定要在内存中维护一个Class对象保存方法。

如何获取Class对象呢?三种方法。

一,Object类的getClass()方法;

二,String className="java.util.Date";Class cl=Class.forName(className);

三,Class cl=int.class;

接下来的笔记按照2所讲的四个作用,通过四段代码来认识反射。

4.在运行中分析类的能力

反射机制最重要的内容是------检查类的结构,即它的field,method,constructor。


其实写起来是很有难度的,也是照着书打的,自己空手写一个出来,那真是大佬。本想传代码的,但是排版太难看了,就截图了。

这里首先学到的是Class中getFields,getDeclaredFields等方法的使用,以及getModifiers方法,用Method时还有getReturnType,getParameterTypes等方法,学会使用这些方法,就可以查看想了解的关于类的一切内容。

5.在运行中查看对象


这里能学到的:第一,有了java类的对象后,取值。即Employee xxx=new Employee("harry hacker",35000,10,1,1989);Class t=xxx.getClass(); Field f=xxx.getDeclaredField("name");Object v=f.get(xxx);

第二,setAccessible()方法。第三,Field.get(xxx)方法如果返回一个double的话,会自动打包成Double,要强转一下

6.实现通用的数组操作代码

此处的核心就是把Array作为一整个Object来考虑。

有人会说,那我每个类用到的时候写个CopyOf()函数就好了嘛,可是如果是通用的数组的话,就不太容易操作啦

7.使用Method对象

这里重要的是invoke函数的使用。

今天学了反射,总结一下,感觉其实不是笨,是见识太少了,还是要多学习。第二,我们不要和别人时刻比较,要知道自己要做什么,然后,默默的去做。感觉做技术是件幸福的事,虽然要时刻学习,可是谁告诉你不学习就能快乐?能够像个工匠一样打磨自己的技艺,打磨自己的心,未尝不是快乐。匠人,呵。

2018-9-1 与南京 江宁 梅园

-------------------------------------------------------------------------------------------------------------------------------------------------------接下来是反射的画龙点睛的地方,有助于大家理解:

相关文章

  • 博客地址

    java注解-01、java注解-02、Git面试资源java反射-01、java反射-02、java反射-03为...

  • Java反射机制入门

    Java反射机制入门 一、什么是反射 JAVA反射机制(The JAVA reflection mechanism...

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • 反射之一

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • 反射之二

    总结内容源自一下文章粗浅看java反射机制反射机制应用实践谈谈java反射机制Java Reflection(反射...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java 反射机制

    Java 反射机制 什么是反射 Java 反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。 ...

  • 一探究竟:Java反射效率低的原因到底在哪?

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • 面试官说:大家都说 Java 反射效率低,你知道原因在哪里么

    预备知识 了解 Java 反射基本用法 看完本文可以达到什么程度 了解 Java 反射原理及 Java 反射效率低...

  • Java面试题之JavaSE高级

    一、Java中的反射 1.说说你对Java中反射的理解 java中的反射首先是能够获取到Java...

网友评论

      本文标题:Java反射

      本文链接:https://www.haomeiwen.com/subject/zgwywftx.html