反射 笔记

<1> 定义:Java程序中的各个java类属于同一类事物,描述这类事物的java类就是Class

<2> 对比提问:众多的人用一个什么类表示?众多的java类用一个什么类表示?

人   Person

Java类     Class

<3>  对比提问:Person类代表人,它的实例对象就是张三,李四这样一个个具体的人,Class类对象java类,它的各个实例对象又分别对应什么呢?

》对应各个类在内存中的字节码,例如。Person类的字节码,ArrayList类的字节码,等等

一个类被类加载器加载到内存中,占用一片存储空间,这个空间里面的内容就是类的字节码,不同类的字节码是不同的,所以他们在内存中是不同的,这一个个的空间可分别用一个个的对象来表示,这些对象具有相同的类型,这个类型是什么呢?

<4> 如何得到各个字节码对应的实例对象(Class类型)

1>类名.class  例如  System.class

2>对象.getClass()   例如  new Date().getClass()

3>Class.forName(“类名”)  例如  Class.forName(“java.lang.String”)

面试题该方法有两种情况  该类的作用是,加载字节码

1,该类的字节码已经加载到内存中来了,要使用它只需要找到它,返回就行了

2在jvm里还没有该字节码,于是就用类加载器去加载,加载进来后就将那份字节码缓存起来,forName方法返回加载进来的字节码

<5> 九个预定义Class实例对象

参看Class.isPrimitive方法的帮助

Int.class == Integer.TYPE

<6> 数组类型的Class实例对象

Class.isArray()

总之,只要是在源程序中出现的类型都有各自的Class实例对象,例如int[] ,void….

15  反射

<1>   反射就是把java类中的各种成分映射成相应的java类。例如,一个java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等等信息也用一个个的java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。表示java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应的实例对象来表示,他们是Field,Method,Contructor,Package等等

<2>   一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示,通过调用Class类的方法可以得到这些实例对象后,得到这些实例对象后有什么用呢?怎么用?这正是学习和应用反射的要点。

反射 笔记,布布扣,bubuko.com

时间: 2024-08-06 20:08:49

反射 笔记的相关文章

python 反射笔记

反射:是指以字符串的形式传入要执行的对象或者要获取的信息 以下以代码的执行步骤来演示:创建一个包:test:   --__init__   --fanshe.py   --main.py fanshe.py GB = '这是全局变量'   def func1():     return '这是反射函数func1的结果' def func2():     return '这是反射函数func2的结果' def func3():     return '这是反射函数func3的结果' main.py

反射笔记

1. getFields()和getDeclaredFields()的区别 getFields()和getDeclaredFields()返回Field对象,通过field.getName()获取名称. getFields()只能获取声明为public的字段,包括父类的. getDeclaredFields()能获取声明的所有字段,包括public,protected,private. 2. 转载 关键字:内省.JavaBean.PropertyDescriptor类.Introspector类

C#基础系列:反射笔记

前言:使用反射也有几年了,但是一直觉得,反这个概念很抽象,今天有时间就来总结下这个知识点. 1.为什么需要反射: 最初使用反射的时候,作为小菜总是不理解,既然可以通过new 一个对象的方式得到对象,然后通过对象去调用属性和方法,那么为什么还需要反射去调用呢?后来使用多了发现这就是一个先绑定还是后绑定的问题,很多初使用反射的开发人员通常都会有类似这种疑虑:既然在开发时就能够写好代码,干嘛还放到运行期去做,不光繁琐,而且效率也受影响.博主觉得主要是适用性的问题,如果你的系统没有那么高的扩展性和灵活性

C#基础系列——反射笔记

前言:使用反射也有几年了,但是一直觉得,反这个概念很抽象,今天有时间就来总结下这个知识点. 1.为什么需要反射: 最初使用反射的时候,作为小菜总是不理解,既然可以通过new 一个对象的方式得到对象,然后通过对象去调用属性和方法,那么为什么还需要反射去调用呢?后来使用多了发现这就是一个先绑定还是后绑定的问题,很多初使用反射的开发人员通常都会有类似这种疑虑:既然在开发时就能够写好代码,干嘛还放到运行期去做,不光繁琐,而且效率也受影响.博主觉得主要是适用性的问题,如果你的系统没有那么高的扩展性和灵活性

反射笔记(转载)

Java反射机制详解 java 反射 定义 功能 示例 概要: Java反射机制详解 | |目录 1反射机制是什么 2反射机制能做什么 3反射机制的相关API ·通过一个对象获得完整的包名和类名 ·实例化Class类对象 ·获取一个对象的父类与实现的接口 ·获取某个类中的全部构造函数 - 详见下例 ·通过反射机制实例化一个类的对象 ·获取某个类的全部属性 ·获取某个类的全部方法 ·通过反射机制调用某个类的方法 ·通过反射机制操作某个类的属性 ·反射机制的动态代理 4反射机制的应用实例 ·在泛型为

C#基础系列——再也不用担心面试官问我“事件”了

前言:作为.Net攻城狮,你面试过程中是否遇到过这样的问题呢:什么是事件?事件和委托的区别?既然事件作为一种特殊的委托,那么它的优势如何体现?诸如此类...你是否也曾经被问到过?你又是否都答出来了呢?上两篇由浅及深介绍了下委托的用法,这篇还是来说说事件.希望通过这篇的介绍,博友能有个系统的认识,至少应付面试没问题了吧.不信?瞧瞧去~~ C#基础系列目录: C#基础系列——Linq to Xml读写xml C#基础系列——扩展方法的使用 C#基础系列——序列化效率比拼 C#基础系列——反射笔记 C

C#基础系列——Attribute特性使用

前言:上篇 C#基础系列--反射笔记 总结了下反射得基础用法,这章我们来看看C#的另一个基础技术--特性. 1.什么是特性:就博主的理解,特性就是在类的类名称.属性.方法等上面加一个标记,使这些类.属性.方法等具有某些统一的特征,从而达到某些特殊的需要.比如:方法的异常捕捉,你是否还在某些可能出现异常的地方(例如数据库的操作.文件的操作等)经常使用try...catch.这个时候如果使用特性,就可以大大减少方法里面的try...catch的使用.你只需要定义一个专门捕捉异常的特性类Excepti

C#基础系列——一场风花雪月的邂逅:接口和抽象类

前言:最近一个认识的朋友准备转行做编程,看他自己边看视频边学习,挺有干劲的.那天他问我接口和抽象类这两个东西,他说,既然它们如此相像, 我用抽象类就能解决的问题,又整个接口出来干嘛,这不是误导初学者吗.博主呵呵一笑,回想当初的自己,不也有此种疑惑么...今天打算针对他的问题,结合一个实际的使用场景来说明下抽象类和接口的异同,到底哪些情况需要用接口?又有哪些情况需要用抽象类呢? C#基础系列目录: C#基础系列——Linq to Xml读写xml C#基础系列——扩展方法的使用 C#基础系列——序

C#基础系列——小话泛型

前言:前面两章介绍了C#的两个常用技术:C#基础系列——反射笔记 和 C#基础系列——Attribute特性使用 .这一章来总结下C#泛型技术的使用.据博主的使用经历,觉得泛型也是为了重用而生的,并且大部分时候会和反射一起使用.这次还是打算围绕WWH(即What.Why.How)来讲解. 1.什么是泛型:通过参数化类型来实现在同一份代码上操作多种数据类型.利用“参数化类型”将类型抽象化,从而实现灵活的复用.怎么理解呢,其实根据博主的理解,泛型就是将类型抽象化,使用抽象化的类型或对象去实现某些功能