首页 > 代码库 > java 反射
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 反射
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。