get Methods from current class or parent class - Android java.lang.reflect

Android examples for java.lang.reflect:Method Get

Description

get Methods from current class or parent class

Demo Code

/*//w w  w .ja  v  a 2s . c  om
 * 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.Method;

import java.util.ArrayList;

import java.util.List;

public class Main {

    public static List<Method> getMethods(Class<?> clas,
            boolean isGetDeclaredMethod, boolean isFromSuperClassGet,
            boolean isDESCGet) {
        List<Method> methodList = new ArrayList<Method>();
        //?????????????
        if (isFromSuperClassGet) {
            //?????????????
            List<Class<?>> classList = getSuperClasss(clas, true);

            //???????????
            if (isDESCGet) {
                for (int w = classList.size() - 1; w > -1; w--) {
                    for (Method method : isGetDeclaredMethod ? classList
                            .get(w).getDeclaredMethods() : classList.get(w)
                            .getMethods()) {
                        methodList.add(method);
                    }
                }
            } else {
                for (int w = 0; w < classList.size(); w++) {
                    for (Method method : isGetDeclaredMethod ? classList
                            .get(w).getDeclaredMethods() : classList.get(w)
                            .getMethods()) {
                        methodList.add(method);
                    }
                }
            }
        } else {
            for (Method method : isGetDeclaredMethod ? clas
                    .getDeclaredMethods() : clas.getMethods()) {
                methodList.add(method);
            }
        }
        return methodList;
    }

    public static List<Method> getMethods(Class<?> sourceClass) {
        return getMethods(sourceClass, true, true, true);
    }

    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