哪些项目中用到了Java反射机制?

Python020

哪些项目中用到了Java反射机制?,第1张

什么是反射?将类的每个组件封装到另一个对象中的过程称为反射。其中,组件表示我们类的成员变量(Field)、构造方法(Constructor)和成员方法(Method)。反射使您可以在程序运行期间操作类对象,从而提高程序的灵活性。解耦提高了程序的可扩展性,提高了代码重用率,便于外部调用。任何类别只要知道类别名称,就可以知道该类别的所有属性和方法

可以对任何对象调用任何方法之一。我们通过一个事例引入。首先不要考虑反射问题,先完成事件。例子:订单结算时可以通过支付宝支付,如订单程序美团投递,可以通过微信结算、银行卡等方式直接进行。那么,在与美团外卖支付的公司合作时,必须制定支付指南。这个规范在Java中怎么表达?

当然,由于使用了界面,所以在美团外卖中指定了界面后,这些合作企业实现了这个界面。“反射”(Reflection)是Java的特征之一,它允许正在运行的Java程序检查自己,并直接操作程序的内部属性和方法。反射是所有注释的实现原理,特别是在框架设计中。反射是什么?主要是指程序可以访问、检测和修改自己的状态。

反射像镜子一样,让开发者知道这个类中有哪些成员。大多数人想知道Java有包,为什么会有反射。破坏封装性。通过允许外部访问个人变量,使类不太安全。就我个人而言,反射机制实际上是上帝的模型。如果方法的调用是Java正确的打开方式,那么反射机制就是上帝偷偷打开的后门。只要有相应的class存在,什么都可以调用。那么,上帝为什么要打开这个后门呢?这包括静态和动态概念。

首先应该说 反射机制提供的功能是很强大的 但是客观性和维护性很差

一般反射用在 构造框架 以及工具开发等等

但是实际开发软件运用的并不多

下面是一个简单的例子

package com.wqx.test4

public class Test {

public void sayhello(String name)

{

System.out.println("hello:"+name)

}

public static void main(String[] args) {

try {

//把test 这个类载入内存

Class c=Class.forName("com.wqx.test4.Test")

//创建这个类的实例

Object obj=c.newInstance()

//通过class来取得这个方法对象 并且声明 这个类的参数类型

java.lang.reflect.Method method=c.getMethod("sayhello", Class.forName("java.lang.String"))

//invoke 来执行方法对象 记得参数类型要跟这里的参数匹配

method.invoke(obj, "wqx")

} catch (Exception e) {

// TODO: handle exception

}

}

}