【问题标题】:Checking if a method is an overridden method of Interface using reflection使用反射检查方法是否是接口的重写方法
【发布时间】:2011-12-22 14:28:01
【问题描述】:

我正在尝试自动生成一些 EJB 服务代码,它们是 Java DAO 类的包装器。 DAO 类实现 DAO 接口,但也有自己的公共方法。这个 DAO 层是由另一个团队实现的,所以我不能玩弄它。

我正在使用 CodeModel API 来生成代码。我得到了每个 DAO 类,现在想创建 EJB 服务代码。使用java反射我试图检查DAO类中声明的方法是否是接口的重写实现方法。无论如何我可以检查一下吗?

【问题讨论】:

    标签: java


    【解决方案1】:

    1) 如果被覆盖的方法带有@Overridden 注解,那么您可以遍历这些方法,并使用此 API 检查它们的注解:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/reflect/Method.html#getDeclaredAnnotations%28%29

    2) 如果没有注释,我认为,唯一的方法是遍历父类和接口并比较方法签名,在那里声明与您的类中的签名。

    【讨论】:

    • 问题是可能有也可能没有注释
    • 您无法检查注释并需要比较签名,正如我在 2) 中提到的那样。示例之一:robsanheim.com/2005/12/08/…
    • 是的,我已经看到了。并实施了第二条路线。
    • 那不行,因为@Override的保留是SOURCE,所以它不会添加到字节码中,因此在运行时不可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 2012-11-13
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多