久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

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

瀏覽:133日期: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中實現(xiàn)可變參數(shù)方法的方式有關。本質上T1 xxx(T2... args)是的語法糖T1 xxx(T2[]args)。當您調用方法時, xxx(arg1, arg2, arg3)是的語法糖xxx(new T2[]{arg1, arg2, arg3})。

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

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

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

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

所以…我的解決方案通過強制執(zhí)行非可變解釋并顯式構造所需的數(shù)組來工作。@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:參數(shù)數(shù)量錯誤。怎么了?

標簽: java
主站蜘蛛池模板: 台北县| 伊宁市| 麟游县| 海阳市| 平安县| 澳门| 内江市| 法库县| 筠连县| 钟山县| 宜良县| 闸北区| 西宁市| 宁波市| 金华市| 武定县| 襄汾县| 望奎县| 平阴县| 上饶县| 博白县| 沁阳市| 旺苍县| 台湾省| 环江| 阳谷县| 忻州市| 合川市| 清涧县| 方正县| 汉川市| 白山市| 班戈县| 南靖县| 株洲县| 山丹县| 麻城市| 秀山| 陆良县| 罗城| 开化县|