title: Why do I get "object is not an instance of declaring class" when invoking a method using reflection?
body: <pre><code>public class Shared {
  
      public static void main(String arg[]) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
          Shared s1 = new Shared();
  
          Object obj[] = new Object[2];
          obj[0] = "object1";
          obj[1] = "object2";
          s1.testParam(null, obj);
  
          Class param[] = new Class[2];
          param[0] = String.class;
          param[1] = Object[].class; //// how to define the second parameter as array
          Method testParamMethod = s1.getClass().getDeclaredMethod("testParam", param);
          testParamMethod.invoke("", obj); ///// here getting error
      }
  
      public void testParam(String query,Object ... params){
          System.out.println("in the testparam method");
      }
  
  }
  </code></pre>
  
  <p>Here is the output:</p>
  
  <pre><code>in the testparam method
  Exception in thread "main" java.lang.IllegalArgumentException: object is not an instance of declaring class
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at pkg.Shared.main(Shared.java:20)
  </code></pre>