集册 Java实例教程 从接口嵌套获取可访问方法

从接口嵌套获取可访问方法

欢马劈雪     最近更新时间:2020-01-02 10:19:05

385
从接口嵌套获取可访问方法

/*

 **        DroidPlugin Project

 **

 ** Copyright(c) 2015 Andy Zhang <zhangyong232@gmail.com>

 **

 ** This file is part of DroidPlugin.

 **

 ** DroidPlugin is free software: you can redistribute it and/or

 ** modify it under the terms of the GNU Lesser General Public

 ** License as published by the Free Software Foundation, either

 ** version 3 of the License, or (at your option) any later version.

 **

 ** DroidPlugin 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

 ** Lesser General Public License for more details.

 **

 ** You should have received a copy of the GNU Lesser General Public

 ** License along with DroidPlugin.  If not, see <http://www.gnu.org/licenses/lgpl.txt>

 **

 **/

//package com.nowjava;


import java.lang.reflect.Method;/** from 时 代      J a v a   公   众 号 - nowjava.com**/

import java.lang.reflect.Modifier;


public class Main {

    private static Method getAccessibleMethodFromInterfaceNest(

            Class<?> cls, final String methodName,

            final Class<?>... parameterTypes) {

        // Search up the superclass chain

        for (; cls != null; cls = cls.getSuperclass()) {


            // Check the implemented interfaces of the parent class

            final Class<?>[] interfaces = cls.getInterfaces();

            for (int i = 0; i < interfaces.length; i++) {

                // Is this interface public?

                if (!Modifier.isPublic(interfaces[i].getModifiers())) {//n o w j a v a . c o m - 时  代  Java 提 供

                    continue;

                }

                // Does the method exist on this interface?

                try {

                    return interfaces[i].getDeclaredMethod(methodName,

                            parameterTypes);

                } catch (final NoSuchMethodException e) { // NOPMD

                    
展开阅读全文