java反射

反射定义:

程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。一个类有多个组成部分,例如:成员变量、方法、构造方法等,反射就是加载类,并解剖出类的各个组成部分。

 

功能作用:

反射机制主要提供以下功能:
 
①在运行时判断任意一个对象所属的类;

②在运行时构造任意一个类的对象;

③在运行时判断任意一个类所具有的成员变量和方法;

④在运行时调用任意一个对象的方法;

⑤生成动态代理。
 
与反射有关的类:
java.lang.Class;
java.lang.reflect.Constructor;
java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;
 

使用步骤:

导入java.lang.relfect包

三个步骤

        第一步,是获得你想操作的类的java.lang.Class对象

        第二步,是调用诸如getDeclaredMethods的方法

        第三步,使用反射API来操作这些信息

 

获得Class对象的方法

1、如果一个类的实例已经得到,你可以使用

Class c =对象.getClass()

 

2、如果你在编译期知道类的名字,你可以使用如下的方法

Class c = java.awt.Button.class

 

3、如果类名在编译期不知道,但是在运行期可以获得,你可以使用下面的方法

Class c = Class.forName(str)

 

反射优点: 
(1)能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性。 
(2)与Java动态编译相结合,可以实现无比强大的功能 


反射缺点: 
(1)使用反射的性能较低 
(2)使用反射相对来说不安全 
(3)破坏了类的封装性,可以通过反射获取这个类的私有方法和属性 

 

posted @ 2018-12-17 10:22 码农恋码 阅读(...) 评论(...) 编辑 收藏