标签: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
原文地址:http://georgewyt.blog.51cto.com/10668476/1953711