/*
 * Copyright (c) 2013 IBM Corporation.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 */
package reflection;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

/** Test of Constructor.newInstance */
public class Reflect23 {
  public static void main(String[] args)
      throws ClassNotFoundException, SecurityException, NoSuchMethodException,
          IllegalAccessException, InstantiationException, IllegalArgumentException,
          InvocationTargetException {
    Class<?> helperClass = Class.forName("reflection.Helper");
    Object helperObject = helperClass.newInstance();
    Method[] methods = helperClass.getDeclaredMethods();
    for (Method m : methods) {
      if (m.getParameterTypes().length == 1) {
        Class<?> paramType = m.getParameterTypes()[0];
        if (!Modifier.isStatic(m.getModifiers())
            && paramType.getName().equals("java.lang.Integer")) {
          Integer i = 1;
          Object[] initArgs = new Object[] {i};
          m.invoke(helperObject, initArgs);
          break;
        }
      }
    }
  }
}
