Java Reflection Constructor Get getConstructor(Class klass, Class... parameterTypes)

Here you can find the source of getConstructor(Class klass, Class... parameterTypes)

Description

get Constructor

License

Open Source License

Declaration

public static Constructor<?> getConstructor(Class<?> klass, Class<?>... parameterTypes)
            throws NoSuchMethodException, SecurityException 

Method Source Code


//package com.java2s;
/*// w w  w  .  j a  v a 2 s . c o  m
 * Vitry, copyright (C) Hans Hoglund 2011
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 * See COPYING.txt for details.
 */

import java.lang.reflect.Constructor;

public class Main {
    public static Constructor<?> getConstructor(Class<?> klass, Class<?>... parameterTypes)
            throws NoSuchMethodException, SecurityException {
        Constructor<?>[] constructors = klass.getConstructors();
        SEARCH: for (Constructor<?> c : constructors) {
            Class<?>[] constructorParameterTypes = c.getParameterTypes();

            if (constructorParameterTypes.length != parameterTypes.length)
                continue SEARCH;

            for (int i = 0; i < parameterTypes.length; i++) {
                if (!constructorParameterTypes[i].isAssignableFrom(parameterTypes[i]))
                    continue SEARCH;
            }
            return c;
        }
        throw new NoSuchMethodException(klass.getName() + ".<init>" + argumentTypesToString(parameterTypes));
    }

    private static String argumentTypesToString(Class<?>[] argTypes) {
        StringBuilder buf = new StringBuilder();
        buf.append("(");
        if (argTypes != null) {
            for (int i = 0; i < argTypes.length; i++) {
                if (i > 0) {
                    buf.append(", ");
                }
                Class<?> c = argTypes[i];
                buf.append((c == null) ? "null" : c.getName());
            }
        }
        buf.append(")");
        return buf.toString();
    }
}

Related

  1. getConstructor(Class clazz, Class... params)
  2. getConstructor(Class clazz, Object... args)
  3. getConstructor(Class clazz, Object[] parameters)
  4. getConstructor(Class cls, Class[] signature)
  5. getConstructor(Class cls, Object... parameters)
  6. getConstructor(Class sourceClass, boolean isFindDeclaredConstructor, boolean isUpwardFind, Class... constructorParameterTypes)
  7. getConstructor(Class theClass, Class[] paramTypes)
  8. getConstructor(Class type, Constructor c)
  9. getConstructor(Class type, Object[] args)