类方法和超类方法的区别

问题描述 投票:0回答:1

我有代码可以找到

B
类的所有方法。

import java.lang.reflect.Method;

public class Main {

    public static class A {
        public Object e() { return new Object(); }
    }

    public static class B extends A {
        @Override
        public String e() { return "hi"; }
    }

    public static void main(String[] args) {
        for (Method md : B.class.getDeclaredMethods()) {
            System.out.println("Name: " + md.getName());
            System.out.println("Declaring class: " + md.getDeclaringClass().getName());
            System.out.println("Return type: " + md.getReturnType().getName());
        }
    }

}

这是代码返回的内容:

Name: e
Declaring class: Main$B
Return type: java.lang.String
Name: e
Declaring class: Main$B
Return type: java.lang.Object

但是,我无法区分重写的方法和原始方法,因为它们具有相同的声明类。我的问题是:在没有给出类的代码的情况下,如果一个方法的返回值与超类方法不同,我如何确定该方法是否被继承。

编辑: 这与我之前的问题不同,因为它是关于接口的,而这个问题是关于继承的。

java reflection
1个回答
0
投票

对照父类检查声明类

Method m = B.class.getMethod("e");
boolean o = m.getDeclaringClass() != A.class;
© www.soinside.com 2019 - 2024. All rights reserved.