国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

java - getMethod 的第二個(gè)參數(shù)是null和new Class[]{}的區(qū)別?

瀏覽:54日期:2024-02-02 18:35:51

問題描述

在反射方法的時(shí)候,如果某方法沒有參數(shù)好像有下面兩種方法去獲得

getMethod(method_name_str, new Class[]{});或者getMethod(method_name_str, null);

請問這兩種方法有區(qū)別嗎?

問題解答

回答1:

就效果來說,對于 Class 類的 getMethod 方法,這兩種參數(shù)沒有區(qū)別。我們可以查看 getMethod 的源碼,getMethod 層層調(diào)用之后,會(huì)使用下面的方法:java - getMethod 的第二個(gè)參數(shù)是null和new Class[]{}的區(qū)別?

這個(gè)方法中,可以看到有一個(gè) arrayContentsEq 方法用來匹配方法的參數(shù):java - getMethod 的第二個(gè)參數(shù)是null和new Class[]{}的區(qū)別?

可以發(fā)現(xiàn),對于 parameterTypes 為 null 的情況,和對于 parameterTypes 為空數(shù)組(length == 0)的情況,效果是一樣的 —— 假設(shè)此時(shí)我們要獲取的方法 m 的參數(shù)為空,那么該方法的 m.getParameterTypes() 返回的數(shù)組(a2)的長度即為 0,我們可以發(fā)現(xiàn) a1 == null 或者 a1.length == 0 的時(shí)候,arrayContentsEq 方法返回的都是 true(即匹配成功)。

回答2:

如果某方法沒有參數(shù),這兩種情況其實(shí)沒什么差別。

跟蹤getMethod(String name, Class<?>... parameterTypes)的源碼,可以發(fā)現(xiàn)如下代碼,其中a1為傳入的parameterTypes,a2為根據(jù)參數(shù)name找到的Method實(shí)例調(diào)用的method.getParameterTypes()。程序根據(jù)比較a1和a2來返回正確的Method。

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;}

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 黄色网址视频在线观看 | 欧美一级一一特黄 | 好爽~好硬~好紧~蜜芽 | 国产片久久 | 亚洲久久成人 | 天天狠操| 国产伦精一区二区三区视频 | 久久久久久久久久毛片精品美女 | 亚洲精品午夜国产va久久成人 | 国产精品极品美女自在线看免费一区二区 | 久草福利资源 | 黄色片免费网址 | 久久香蕉精品视频 | 欧美日韩视频一区二区 | 免费真实播放国产乱子伦 | 99久久免费中文字幕精品 | a毛片成人免费全部播放 | 一区二区三区国产美女在线播放 | 九九欧美 | 毛片大片免费看 | 国产色视频在线观看免费 | 亚洲欧美日本人成在线观看 | 欧美精品hdvdeosex4k | 欧美视频精品在线 | 国产在线播放免费 | 国产成人亚洲合集青青草原精品 | 美国一级毛片视频 | 免费一级毛片在线播放不收费 | 亚洲美女福利视频在线 | 久久成人免费观看全部免费 | 黄色美女免费 | 色老头一区二区三区在线观看 | 中文字幕1区 | 欧美日韩一区二区综合在线视频 | 97视频免费播放观看在线视频 | 一级片观看 | 国产精品免费一区二区三区 | 高清性色生活片久久久 | 亚洲成年| 久色视频在线 | 日韩久久一区二区三区 |