get Constructors from Class<?> - Android java.lang.reflect

Android examples for java.lang.reflect:Constructor

Description

get Constructors from Class<?>

Demo Code

/*/*from  w ww .j ava  2 s . com*/
 * Copyright 2014-2016 QuickAF
 *
 * 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.util.ArrayList;

import java.util.List;

public class Main {

    public static List<Constructor<?>> getConstructors(
            Class<?> sourceClass, boolean isFindDeclaredConstructor,
            boolean isFromSuperClassGet, boolean isDESCGet) {
        List<Constructor<?>> constructorList = new ArrayList<Constructor<?>>();
        if (isFromSuperClassGet) {
            List<Class<?>> classList = getSuperClasss(sourceClass, true);
            if (isDESCGet) {
                for (int w = classList.size() - 1; w > -1; w--) {
                    for (Constructor<?> constructor : isFindDeclaredConstructor ? classList
                            .get(w).getDeclaredConstructors() : classList
                            .get(w).getConstructors()) {
                        constructorList.add(constructor);
                    }
                }
            } else {
                for (int w = 0; w < classList.size(); w++) {
                    for (Constructor<?> constructor : isFindDeclaredConstructor ? classList
                            .get(w).getDeclaredConstructors() : classList
                            .get(w).getConstructors()) {
                        constructorList.add(constructor);
                    }
                }
            }
        } else {
            for (Constructor<?> constructor : isFindDeclaredConstructor ? sourceClass
                    .getDeclaredConstructors() : sourceClass
                    .getConstructors()) {
                constructorList.add(constructor);
            }
        }
        return constructorList;
    }

    public static List<Class<?>> getSuperClasss(Class<?> sourceClass,
            boolean isAddCurrentClass) {
        List<Class<?>> classList = new ArrayList<Class<?>>();
        Class<?> classs;
        if (isAddCurrentClass) {
            classs = sourceClass;
        } else {
            classs = sourceClass.getSuperclass();
        }
        while (classs != null) {
            classList.add(classs);
            classs = classs.getSuperclass();
        }
        return classList;
    }
}

Related Tutorials