反射提供了一种在类上调用方法的方法。通常,只有在无法通过非反射代码将类的实例转换为所需类型时,才需要这样做。用java.lang.reflect.Method.invoke()调用方法。第一个参数是要在其上调用此特定方法的对象实例。 (如果方法为,则第一个参数应为.)后续参数是方法的参数。如果基础方法引发异常,它将被java.lang.reflect.InvocationTargetExceptionpackage。可以使用异常链接机制的InvocationTargetException.getCause()方法检索该方法的原始异常。
考虑一个使用反射在给定类中调用私有测试方法的测试套件。 Deet示例在类中搜索以字符串“ ”开头,具有布尔返回类型和单个Locale参数的方法。然后,它调用每个匹配的方法。
调用getDeclaredMethods(),这将返回该类中显式声明的所有方法。同样,Class.isAssignableFrom()用于确定所定位方法的参数是否与所需的调用兼容。从技术上讲,代码可以测试以下语句是否为,因为Locale是:
但是,Class.isAssignableFrom()更笼统。
首先,请注意只有满足代码所强制的声明限制。接下来,当传递无效参数时,它将引发未经检查的java.util.MissingResourceException。反映出,对已检查的异常和未检查的异常的处理没有区别。它们都package在InvocationTargetException中
Method.invoke()可用于将可变数量的参数传递给方法。要理解的关键概念是,实现可变 Arity 的方法就像将可变参数包装在数组中一样。
InvokeMain示例说明了如何在任何类中调用入口点并传递在运行时确定的一组参数。
首先,要找到方法,代码将搜索名称为“ main”的类,该类具有一个参数,该参数是String的数组。由于是,所以是Method.invoke()的第一个参数。第二个参数是要传递的参数数组。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/5010.html