JAVA深入探究之Method的Invoke方法
在Java中,使用Method类可以描述一个方法。Method类提供了invoke()方法,可以反射调用一个方法。本文将讲解Method的invoke方法的使用方法及示例。
什么是Method的Invoke方法
Method的Invoke方法是Java中反射调用方法的主要方法。它可以调用任意一个对象的任意一个方法,前提是对象要存在,方法要是public的。
Method 的 invoke() 方法通过 Method 对象反射调用相应的方法,传入一个可选的对象,该对象在调用该方法时被执行,如果底层方法需要的参数不为零,则在相同的顺序中包含传递的参数。
Method的Invoke方法的使用方法
Method 的 invoke() 方法返回 Object,因为被调用方法可能会返回任何类型的对象,因此该方法返回 Object。因此,在将其结果转换为所需类型之前,必须进行类型强制转换。
使用 Method 的 invoke() 方法的基本语法如下:
Method method = object.getClass().getMethod("methodName", parameterTypes);
Object result = method.invoke(object, arguments);
其中, object 代表一个对象, methodName 代表该对象上要调用的方法的名称,parameterTypes 是该方法的所有形式参数的类型,一个空数组表示该方法没有参数, arguments 是一个包含要传递给方法的实际参数的参数值对象的数组。
Method的Invoke方法的示例
下面是几个使用 Method 的 invoke() 方法的示例
- 调用一个对象的无参方法
public class TestMethodInvoke {
public void print() {
System.out.println("TestMethodInvoke.print() is called.");
}
public static void main(String[] args) throws Exception {
TestMethodInvoke obj = new TestMethodInvoke();
Method method = obj.getClass().getMethod("print", null);
method.invoke(obj, null);
}
}
输出结果为:
TestMethodInvoke.print() is called.
- 调用一个对象的一参方法
public class TestMethodInvoke {
public void print(String message) {
System.out.println(message);
}
public static void main(String[] args) throws Exception {
TestMethodInvoke obj = new TestMethodInvoke();
Method method = obj.getClass().getMethod("print", String.class);
method.invoke(obj, "TestMethodInvoke.print() is called with parameter.");
}
}
输出结果为:
TestMethodInvoke.print() is called with parameter.
以上两个示例都是通过 Method 的 invoke() 方法调用一个对象的方法。第一个示例调用了一个无参方法,第二个示例调用了一个一参方法。
注意:以上示例中,Class.getMethod()方法用于获取方法。该方法的第一个参数是要取得的方法的名称,第二个参数可以指定任意数量的该方法的参数类型。如果该方法有参数,那么不能使用null作为第二个参数。如果方法没有参数,则第二个参数可以为null。如果要调用的方法是某个基本类型的包装类,那么应该使用基本数据类型来表示参数。例如,调用一个方法具有一个 int 形式的参数,需要使用 Integer.TYPE 来传递参数类型,使用 int.class 传递参数的值。
总结
本文讲解了Method的Invoke方法的使用方法及示例。了解Method的Invoke方法的使用方法可以通过反射机制在程序运行时动态地调用任意一个对象的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA深入探究之Method的Invoke方法 - Python技术站