Obtains the Constructor specified from the given Class and argument types - Java Reflection

Java examples for Reflection:Constructor

Description

Obtains the Constructor specified from the given Class and argument types

Demo Code

/*/*from   w  w w. j a  va 2s. co  m*/
 * JBoss, Home of Professional Open Source
 * Copyright 2009, Red Hat Middleware LLC, and individual contributors
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
//package com.java2s;

import java.lang.reflect.Constructor;

import java.security.AccessController;

import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;

public class Main {
    /**
     * Obtains the Constructor specified from the given Class and argument types
     * @param clazz
     * @param argumentTypes
     * @return
     * @throws NoSuchMethodException
     */
    public static Constructor<?> getConstructor(final Class<?> clazz,
            final Class<?>... argumentTypes) throws NoSuchMethodException {
        try {
            return AccessController
                    .doPrivileged(new PrivilegedExceptionAction<Constructor<?>>() {
                        public Constructor<?> run()
                                throws NoSuchMethodException {
                            return clazz.getConstructor(argumentTypes);
                        }
                    });
        }
        // Unwrap
        catch (final PrivilegedActionException pae) {
            final Throwable t = pae.getCause();
            // Rethrow
            if (t instanceof NoSuchMethodException) {
                throw (NoSuchMethodException) t;
            } else {
                // No other checked Exception thrown by Class.getConstructor
                try {
                    throw (RuntimeException) t;
                }
                // Just in case we've really messed up
                catch (final ClassCastException cce) {
                    throw new RuntimeException(
                            "Obtained unchecked Exception; this code should never be reached",
                            t);
                }
            }
        }
    }
}

Related Tutorials