反射模式--方法的反照m.invoke()版权声明
原创方法的名称和参数列表可以唯一地确定方法。
方法反射操作:method.invoke(对象,参数列表)
反射是框架底部的一些方法,如后所述。Spring重要特征DI:控制反转就是这样一个原理。至于为什么使用反射,1.首先,您可以通过任何对象获得类类型,即所有信息,这些信息只能在后面反映出来;2.例如,该方法的反射的好处是解耦。a,b,c对象被调用。 print()方法,通常的想法是创建每个对象,和。a.print() b.print() c.print() ,但如果使用反射 print()方法的对象.invoke(a,参数列表)使用您想要的对象。
package six;
import java.lang.reflect.Method;
/**
- Created by lxq on 2017/9/19.
*/
public class MethodDemo {
public static void main(String[] args) {
//想要获取print(int,int)
//1.获取方法就是获取关于类的信息。---首先获取类的类类型。
A a1 = new A();
Class c = a1.getClass();
//2.获取方法---要确定的名称和参数列表。
try {
//Method m = c.getMethod("print",new Class[]{int.class,int.class})
Method m = c.getMethod("print",int.class,int.class);
//使用该方法的反射操作。m对象进行方法调用。
//和 a1.print(10,20);效果完全一样
//反过来--用print此方法对象操作a1
//如果没有返回值,则方法返回。null,否则返回特定的返回值。
//m.invoke(a1,new Object[]{10,20});
m.invoke(a1,10,20);//也可以使用数组
//另一种方法
Method m1 = c.getMethod("print",String.class,String.class);
m1.invoke(a1,"hello","world");
//没有参数的方法
Method m2 = c.getMethod("print");
m2.invoke(a1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class A{
public void print(int a,int b){
System.out.println(a+b);
}
public void print(String a,String b){
System.out.println(a.toUpperCase()+b.toUpperCase());
}
public void print(){
System.out.println("没有参数");
}
}
作者:lixq05
来源:CSDN
原文:https://blog.csdn.net/lixq05/article/details/78029653
版权声明:本文为博主原创文章。转载请附上博客链接!
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除