关闭

java中如何判断一个子类方法是否已经被重写

621人阅读 评论(0) 收藏 举报
分类:
package com.test;
 
import java.lang.reflect.Method;
 
public class B extends A {
    @Override
    public void test1(int i) {
        System.out.println("B test1");
    }
    public void test2() {
        System.out.println("B test2");
    }
    public void test3() {
        System.out.println("B test3");
    }
    public static void main(String[] args) {
        B b = new B();
        Method[] bfs = b.getClass().getDeclaredMethods();
        Method[] afs = b.getClass().getSuperclass().getDeclaredMethods();
        for(Method bm : bfs) {
            for(Method am : afs) {
                if(bm.getName().equals(am.getName()) && 
                        bm.getReturnType().equals(am.getReturnType())) {
                    Class[] bc = bm.getParameterTypes();
                    Class[] ac = am.getParameterTypes();
                    if(bc.length == ac.length) {
                        boolean isEqual = true;
                        for(int i=0;i<bc.length;i++) {
                            if(!bc[i].equals(ac[i])) {
                                isEqual = false;
                                break;
                            }
                        }
                        if(isEqual) {
                            System.out.println(b.getClass()+" has method " + bm.getName() + 
                                    " override " + b.getClass().getSuperclass());
                        }
                    }
                }
            }
        }
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1819054次
    • 积分:20122
    • 等级:
    • 排名:第397名
    • 原创:141篇
    • 转载:656篇
    • 译文:6篇
    • 评论:367条
    文章存档
    最新评论