扫码关注官方订阅号
在反射方法的时候,如果某方法没有参数好像有下面两种方法去获得
getMethod(method_name_str, new Class[]{});或者getMethod(method_name_str, null);
请问这两种方法有区别吗?
欢迎选择我的课程,让我们一起见证您的进步~~
如果某方法没有参数,这两种情况其实没什么差别。
跟踪getMethod(String name, Class<?>... parameterTypes)的源码,可以发现如下代码,其中a1为传入的parameterTypes,a2为根据参数name找到的Method实例调用的method.getParameterTypes()。程序根据比较a1和a2来返回正确的Method。
getMethod(String name, Class<?>... parameterTypes)
parameterTypes
a2
name
Method
method.getParameterTypes()
a1
private static boolean arrayContentsEq(Object[] a1, Object[] a2) { if (a1 == null) { return a2 == null || a2.length == 0; } if (a2 == null) { return a1.length == 0; } if (a1.length != a2.length) { return false; } for (int i = 0; i < a1.length; i++) { if (a1[i] != a2[i]) { return false; } } return true; }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
如果某方法没有参数,这两种情况其实没什么差别。
跟踪
getMethod(String name, Class<?>... parameterTypes)的源码,可以发现如下代码,其中a1为传入的parameterTypes,a2为根据参数name找到的Method实例调用的method.getParameterTypes()。程序根据比较a1和a2来返回正确的Method。