JAVA中反射是什么

Python016

JAVA中反射是什么,第1张

JAVA中反射是动态获取信息以及动态调用对象方法的一种反射机制。

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。而这也是Java被视为动态语言的一个关键性质。

Java反射的功能是在运行时判断任意一个对象所属的类,在运行时构造任意一个类的对象,在运行时判断任意一个类所具有的成员变量和方法,在运行时调用任意一个对象的方法,生成动态代理。

扩展资料:

JAVA中反射实例:

1、Class superClass=clazz.getSuperclass()//获取父类。

System.out.println("getSuperclass:"+superClass)。   

2、Class[] interfaces=clazz.getInterfaces()//获取实现接口。

System.out.println("getInterfaces:"+interfaces.length)。

3、Constructor[] cons=clazz.getConstructors()//构造方法。

System.out.println("getConstructors:"+cons.length)。

参考资料来源:百度百科: JAVA反射机制

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

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

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

下面是一个简单的例子

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

}

}

}

1. Java反射包reflection提供对Class,Method,field,constructor1 等信息的封装类型。

2. 通过这些api可以轻易获得一个类的各种信息并且可以进行实例化,方法调用等。

类中的private参数可以通过setaccessible方法强制获取。

3. 反射的作用可谓是博大精深,JDK动态代理生成代理类的字节码后,首先把这个类通过defineclass定义成一个类,然后用class.for(name)会把该类加载到jvm,之后我们就可以通过,A.class.GetMethod()获取其方法,然后通过invoke调用其方法,在调用这个方法时,实际上会通过被代理类的引用再去调用原方法。