一、Method类表明某个类中的一个成员方法java
二、获得类中的某一个方法数组
例子: Method charAt = Class.forName("java.lang.String").getMethod("charAt", int.class);
三、调用方法spa
一般方式:System.out.println(str.charAt(1)); 反射方式: System.out.println(charAt.invoke(str, 1));
特别注意:若是传递给Method对象的invoke()方法的第一个参数为null,这有着什么样的意义呢?说明该Method对象对应的是一个静态方法!code
四、jdk1.4和jdk1.5的invoke方法的区别对象
Jdk1.5:public Object invoke(Object obj,Object... args) Jdk1.4:public Object invoke(Object obj,Object[] args),即按jdk1.4的语法,须要将一个数组做为参数传递给invoke方法时,数组中的每一个元素分别对应被调用方法中的一个参数,因此,调用charAt方法的代码也能够用Jdk1.4改写为 charAt.invoke(“str”, new Object[]{1})形式。
再强调一遍参数类型用什么来表示?用Class对象!ci
package staticimport.reflect.method; import java.lang.reflect.Method; public class ReflectMethodTest { public static void main(String[] args) throws Exception { String str = "abc"; //jdk1.5(可变参数) Method method = String.class.getMethod("charAt", int.class); System.out.println(method.invoke(str, 1)); //jdk1.4(数组方式) Method method2 = String.class.getMethod("charAt", new Class[]{int.class}); System.out.println(method2.invoke(str, new Object[]{2})); //调用静态方法 Method method3 = Class.forName("java.lang.Math").getMethod("max", int.class,int.class); System.out.println(method3.invoke(null, 4, 100)); } }
某个变量属于某个类,对变量的如何动做(方法)应随之隶属于该类!换句话说,我拥有该变量,那么我就是该变量的全部者(专家)。如:车停、画圆、关门等。get