Java 反射机制
(一)java反射的定义
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道和获取这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和获取任意一个属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
即通过反射机制可以动态的进行对类分割,将类中例如方法 变量名映射到对象中。
(二)java 反射核心类
Class
获取class对象的三种方式(假设有一个类User且有一个user实例对象)
1 2 3 4 5 6 7
| class = User.class;
class = user.getClass();
String className = "com.hocztms.entity.User"; class = Class.forName(className);
|
通过获取的这个类Class就能够获取到类中方法,变量的对象;
方法类 Method
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Method[] methods = clazz.getMethods();
methods = clazz.getDeclaredMethods();
Method method = object.getClass().getMethod(methodName, parameterTypes);
int modifiers = method.getModifiers();
System.out.print(Modifier.toString(modifiers));
Class returnType = method.getReturnType();
Parameter[] parameters = method.getParameters();
Class[] exceptionTypes = method.getExceptionTypes();
attribute = method.invoke(object, null).toString();
|
字段 Field
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Field[] fields = class.getFields();
fields = stuClass.getDeclaredFields();
Field field = class.getField(fieldName);
int modifiers = field.getModifiers();
System.out.print(Modifier.toString(modifiers));
String fieldType = field.getType().getName();
String fieldName = field.getName();
|
总结
通过反射可以在java程序运行时动态的获取任意类的任意成员变量以及任意方法。
通过java 的反射机制就能够做非常多的事情,结合一定的规则以及利用java的泛型就能够实现,例如统一数据库存储接口,List任意属性排序方法。。。。
理解java反射机制可以做到非常多事情。。。