java反射机制(初学者福利)
前言
最近在学习Java的反射机制,看了很多网上的资料,感觉有点深,初学者理解起来有点困难,干脆把自己理解的写了些总结,希望能对初学反射机制的童鞋有些帮助,如果有不对的地方,还望各位侠士不吝指出.
注:部分内容来源于网络
一.什么是反射
网络上的定义是:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制.
我们通常写的程序都是静态的代码,就是编译之后就能够确定执行顺序的就是静态,而动态是需要程序在运行的时候才知道是如何执行的是便动态,这是我对于动态的理解.换句话说就是我们对想要获取的类在编译期间是完全不了解的,只有在运行的时候才知道.
二.有什么功能
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。(好长啊,总之就是在运行时获取类的所有属性和方法,然后可以任意调用用里边的方法和属性)
三.Java为我们提供了这些反射机制中的类:
java.lang.Class;
java.lang.reflect.Constructor;
java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;
很多反射中的方法,属性等操作我们可以从这四个类中查询。
四.具体功能实现
1.获取类
这里我以获取Person类为例
package reflect;
public class Person {
private String name;
private int age;
public Person(){
System.out.println("无参构造器");
}
public Person(String name, int age) {
System.out.println("有参构造器");
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='"