java 反射
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 反射相关的知识,希望对你有一定的参考价值。
反射是一种动态获取信息以及动态调用对象方法的机制。在程序运行状态中,通过反射能够知道某个类具有哪些属性和方法;能够访问某一个对象的方法和属性。
具体来说,反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;
生成动态代理。
获取包名和类名
com.freshReflectionTest { (String[] args) { ReflectionTest reflectionTest = ReflectionTest()System..println(reflectionTest.getClass().getName())} }
输出:
com.fresh.ReflectionTest
获取类信息
com.freshReflectionTest { (String[] args) ClassNotFoundException { Class<?> class1 = Class<?> class2 = Class<?> class3 = class1 = Class.()class2 = ReflectionTest().getClass()class3 = ReflectionTest.System..println(class1)System..println(class2)System..println(class3)} }
获取类的父类和接口
com.freshjava.io.SerializableReflectionTest Serializable { = -(String[] args) ClassNotFoundException { Class<?> clazz = Class.()Class<?> parentClass = clazz.getSuperclass()System..println(+ parentClass.getName())Class<?> intes[] = clazz.getInterfaces()System..println()(i = i < intes.++i) { System..println((i + ) + + intes[i].getName())} } }
输出:
clazz:java.lang.Object clazz: :java.io.Serializable
实例化类对象
user类:
com.freshUser { String () { ()} (String name) { ().= name} (ageString name) { ().= age.= name} () { } (age) { .= age} String () { } (String name) { .= name} String () { + + + + + + } }
ReflectionTest类:
com.freshjava.lang.reflect.ConstructorReflectionTest { (String[] args) Exception { Class<?> class1 = Class.()User user = (User) class1.newInstance()user.setAge()user.setName()System..println(user)Constructor<?> cons[] = class1.getConstructors()(i = i < cons.++i) { Class<?> classz[] = cons[i].getParameterTypes()System..println(+ i + )(j = j < classz.++j) { (j == classz.- ) { System..println(classz[j].getName())} { System..println(classz[j].getName()+)} } System..println()} user = (User) cons[].newInstance()System..println(user)user = (User) cons[].newInstance()System..println(user)} }
获取类的属性
以上是关于java 反射的主要内容,如果未能解决你的问题,请参考以下文章
使用反射在外部JAR / CLASS上调用包含Hibernate事务的方法(Java EE)