java为什么反射 java 什么是反射

Java中的反射,我们常见是取得构造方法,成员变量,普通方法,还有对数组反射的操作。

1、反射的精辟定义:反射就是把Java类中的各种成分映射成相应的Java类。

2、Class实例表示正在运行的Java应用程序中的类和接口。所有的

3、反射除了方法体得不到,别的都可以得到。包括可以得到类里私有的成员变量。本人觉得这破坏了Java的封装性,不知道为什么要这么设计。

一、构造方法的反射

(1)得到需要反射的类Class。知道类名可以使用forName(String className) 方法。也可以通过对象的.getClass方法获得。或者明确去获得哪个类型。比如我们有一个Person类,我们想得到这个类的实例可以写成 Person.class。

java为什么反射 java 什么是反射

(2)构造方法用Constructor类表示。可以通过刚才得到的Class,使用getConstructor方法获得,想获得什么形参的构造方法,就传入什么形参类型的Class,比如想取得String的String(StringBuffer buffer) 构造方法可以这样:String.class.getConstructor(StringBuffer.class)。

(3)使用取得的构造方法创建对象,我们需要使用newInstance方法,形参为可变参数,按上面取得的String的构造方法,我们就可以这样创建对象,String.class.getConstructor(StringBuffer.class).newInstance(new StringBuffer())

二、成员变量的反射

(1)我们同样需要取得反射的类Class。

(2)Java中使用Field类表示字段,我们想获得成员变量可以使用Class的getField(String name)方法,参数为成员变量的名字。也有getFields()方法取得该类的所有成员变量,返回值为Field的数组。取得Field的值,使用 get方法,设置值使用set方法。

(3)暴力访问私有成员使用setAccessible方法,getType() 取得Field类型,getName()取得Field的字段名称。

三、普通方法的反射

(1)取得反射类Class。

(2)方法使用Method类定义,获得方法使用getMethod(String name, Class… parameterTypes) ,用法很像获得构造方法,只是多出一个方法名的参数。

(3)getReturnType()获得方法的返回值类型,getParameterTypes()获得所有形参类型。

(4)用invoke调用方法第一个参数为需要调用的对象,第二个参数为用于调用的参数。

  

爱华网本文地址 » http://www.413yy.cn/a/245161/589491376.html

更多阅读

SOA--什么是/为什么/怎么样/要素/Web Service webservice三要素

什么是SOA?“面向服务的架构”表达了一种软件架构的概念,它定义为使用服务来满足软件用户的需求。在SOA环境中,网络上的节点以独立服务的形式将自己的资源开放给网络上其他参与者,其他参与者按照一种标准的方法使用资源。SOA不是一种具

什么是团队精神?为什么要倡导团队学习?如何培养团队精神?

1.什么是团队精神?“团队”是管理学界近年较为流行的一个词,事实上,现代管理的确愈来愈重视“团队”。同群体不同,团队不是某个在一起工作的集体。举一例子:每年在美国篮球大赛结束后,常会从各个优胜队中挑出最优秀的队员,组成一支“梦之队

声明:《java为什么反射 java 什么是反射》为网友任放縱分享!如侵犯到您的合法权益请联系我们删除