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

您的位置:首頁技術文章
文章詳情頁

Java反射:getMethod(String method,Object []。class)不起作用

瀏覽:106日期:2024-05-01 08:47:30
如何解決Java反射:getMethod(String method,Object []。class)不起作用?

您需要像這樣調用方法:

@H_301_2@s.invoke(this, new Object[]{new Object[]{'hi', 'there'}});

(…或在@Jon的答案中使用替代方法。)

當前代碼失敗的原因與Java中實現可變參數方法的方式有關。本質上T1 xxx(T2... args)是的語法糖T1 xxx(T2[]args)。當您調用方法時, xxx(arg1, arg2, arg3)是的語法糖xxx(new T2[]{arg1, arg2, arg3})。

在這種情況下,您嘗試使用另一個具有相同數組基類型的變量方法來調用變量方法,并且該代碼有多種可能的解釋。

當對可變調用有兩種可能的解釋時,Java會 假定 您嘗試使用該調用的“未使用”版本而不是“使用”版本。或者更確切地說, 當且僅當 :

實際參數的數量不等于形式參數的數量, 或者最后一個實際參數與最后一個形式參數的(數組)類型不兼容。

如果您有興趣,可以在JLS的15.12.4.2節中指定此行為。

所以…我的解決方案通過強制執行非可變解釋并顯式構造所需的數組來工作。@Jon 的解決方案通過強制 正確的 方言解釋來起作用。

解決方法

我有以下代碼:

public void myMethod(Object... args) { System.out.println('this is myMethod');}public void invokeMyMethod() { Method s = this.getClass().getMethod('myMethod',Object[].class); Object[] ex = new Object[2]; ex[0] = 'hi'; ex[1] = 'there'; s.invoke(this,ex);}

我收到異常java.lang.IllegalArgumentException:參數數量錯誤。怎么了?

標簽: java
主站蜘蛛池模板: 久青草国产97香蕉在线视频xx | 久草福利资源网站免费 | 在线毛片免费 | 曰批美女免费视频播放 | 91久久线看在观草草青青 | 日本特一级毛片免费视频 | 一级做a爰片性色毛片男 | japanese 色系 tube日本 | 亚洲第一欧美 | 毛片免费观看久久欧美 | 亚洲性在线观看 | 久久精品国产亚洲综合色 | 久久精品道一区二区三区 | 欧美日韩一区二区综合在线视频 | 114一级毛片免费 | 欧美午夜在线观看理论片 | 鲁老汉精品视频在线观看 | 久久久久爽亚洲精品 | 九九免费精品视频在这里 | 99国产精品视频免费观看 | 欧美a一片xxxx片 | 亚洲第一男人天堂 | 亚洲激情视频网站 | 中文国产成人精品久久水 | 国产亚洲精品久久久久久无 | 可以看的黄网 | 男人的天堂中文字幕 | 欧美国产日本高清不卡 | 免费又黄又爽又猛大片午夜 | 欧美乱大交xxxxx在线观看 | 免费国产精品视频 | 日本三级成人午夜视频网 | 欧美精品日本一级特黄 | 九九九热视频 | 日本欧美不卡一区二区三区在线 | 久久久久久毛片免费观看 | 国产综合在线播放 | 91精品视频在线播放 | 美女张开腿让男人桶的动态图 | 91精品国产综合久久香蕉 | 精品国产香蕉伊思人在线 |