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反射机制
Java反射机制是一个非常强大的功能,在很多大型项目比如Spring,Mybatis都可以看见反射的身影。通过反射机制我们可以在运行期间获取对象的类型信息,利用这一特性我们可以实现工厂模式和代理模式等设计模式,同时也可以解决Java泛型擦除等令人苦恼的问题。下面java课程http://www.kmbdqn.com/就从实际应用的角度出发,来应用一下Java的反射机制。
反射基础
p.s:本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的QuickStart。
在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的反射类Class,在Java中我们有三种方法可以获取一个对象的反射类。
通过getClass方法
在Java中,每一个Object都有一个getClass方法,通过getClass方法我们可以获取到这个对象对应的反射类:
Strings="ziwenxie"
Class<?>c=s.getClass()
通过forName方法
我们也可以调用Class类的静态方法forName:
Class<?>c=Class.forName("java.lang.String")
使用.class
或者我们也可以直接使用.class:
Class<?>c=String.class
获取类型信息
在文章开头我们就提到反射的一大好处就是可以允许我们在运行期间获取对象的类型信息,下面我们通过一个例子来具体看一下。
首先我们在typeinfo.interfacea包下面新建一个接口A:
packagetypeinfo.interfacea
publicinterfaceA{voidf()}
接着我们在typeinfo.packageaccess包下面新建一个接口C,接口C继承自接口A,并且我们还另外创建了几个用于测试的方法,注意下面几个方法的权限都是不同的。
java的反射用法:(异常请自行处理)
①找到类:Class cl = Class.forName("java.util.Date")
②创建对象(要求这个类中含有空参数的构造方法):Object obj = cl.newInstence()
③根据名称和参数找方法:Method method1 = cl.getMethod("getTime")//如果没有参数不用写第二个参数如果有参数的如:Method method2 = cl.getMethod("setTime",long.class)
④在某个对象上面执行方法,Object result = method1.invoke(obj)//如果有参数的Object result = method2.invoke(obj,21317362721)
执行的方如果有返回值,将返回值返回,否则返回null
java开发工程师岗位职责:
1、负责公司网站开发和维护;
2、负责对网站进行实施,测试;
3、负责现有网站的维护和升级;
4、负责解决开发过程中的技术问题;
5、负责网站开发文档编写工作;
6、统一代码风格、监督团队开发、落实测试、验收代码质量;
7、参与软件系统设计,能编写代码。