大家可能会思考,我们能用Java的反射来实现什么呢?
其实,我们更主要的是用反射来实现动态编程,那么什么是动态编程呢?
我们知道,当我们的类中有若干个方法时,我们实现这些方法的顺序是我们编码的时候就已经决定了的。就像这个类:
public class ReflectDemo {
public void method1(){
System.out.println("Method1");
}
public void method2(){
System.out.println("Method2");
}
public void method3(){
System.out.println("Method3");
}
}
它的实现顺序肯定是先 Method1,然后 Method2,最后 Method3.这种称为非动态编程。
而动态编程就是我们类中方法的执行顺序是取决于我给你什么顺序,你就执行什么顺序。
所以动态编程的特点相比较于非动态编程更具有灵活性。
那么我们这个案例就是根据给定的方法名顺序来决定方法的执行顺序:
先上代码:
public class Test {
public static void main(String[] args) throws Exception{
ReflectDemo reflectDemo = new ReflectDemo();
if (args != null && args.length >0){
//获取ReflectDemo的Class对象
Class clazz = reflectDemo.getClass();
//通过反射获取ReflectDemo下的所有方法
Method[] methods = clazz.getMethods();
for (String str :args){
for (int i = 0;i
在此案例中,我们是以方法名作为参数,然后将其传递到Test中,让它来决定执行顺序。
关键点在于首先获取ReflectDemo的Class对象,然后再通过反射获取ReflectDemo下的所有方法
那么怎么传递呢?
我们可以通过main方法中的 String[] args,将方法名作为参数传递进来。
具体操作步骤:
这样就可以实现通过外部传递参数来改变方法的执行顺序了。
而此方法必须依赖于反射才可以实现。



