You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Eickvonder (JIRA)" <ji...@apache.org> on 2017/02/01 13:36:51 UTC

[jira] [Created] (LANG-1310) MethodUtils.invokeMethod throws ArrayStoreException

Eickvonder created LANG-1310:
--------------------------------

             Summary: MethodUtils.invokeMethod throws ArrayStoreException
                 Key: LANG-1310
                 URL: https://issues.apache.org/jira/browse/LANG-1310
             Project: Commons Lang
          Issue Type: Bug
          Components: lang.reflect.*
    Affects Versions: 3.5
            Reporter: Eickvonder


Since release 3.5 and due to the changes of LANG-1115 an ArrayStoreException occurs on MethodUtils.invokeMethod if using varargs arguments and smaller types than the method defines (e.g. int vs long).

{code}
  @Test
  public void testMethodUtilsInvokeMethodVarArgs () throws Exception {
    MyObject object = new MyObject ();
    MethodUtils.invokeMethod (object, "doSomething", 1);
  }

  public static class MyObject {
    public void doSomething (long... args) {
      System.out.println ("doSomething");
    }
  }
{code}

throws 

{code}
java.lang.ArrayStoreException
	at java.lang.System.arraycopy(Native Method)
	at org.apache.commons.lang3.reflect.MethodUtils.getVarArgs(MethodUtils.java:497)
	at org.apache.commons.lang3.reflect.MethodUtils.toVarArgs(MethodUtils.java:463)
	at org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(MethodUtils.java:234)
	at org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(MethodUtils.java:270)
	at org.apache.commons.lang3.reflect.MethodUtils.invokeMethod(MethodUtils.java:147)
{code}

In 3.4. a NoSuchMethodException had been thrown, but in 3.5 the code now finds the matching method but fails then with above exception.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)