Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用反射检查方法是否是接口的重写方法_Java - Fatal编程技术网

Java 使用反射检查方法是否是接口的重写方法

Java 使用反射检查方法是否是接口的重写方法,java,Java,我试图自动生成一些EJB服务代码,它们是围绕Java DAO类的包装器。DAO类实现DAO接口,但也有自己的公共方法。这个DAO层是由另一个团队实现的,所以我不能使用它 我正在使用CodeModelAPI生成代码。我得到了每个DAO类,现在想创建EJB服务代码。使用java反射,我试图检查DAO类中声明的方法是否是接口的重写实现方法。还有什么我可以检查的吗?1)如果重写的方法带有@Overrided annotation,那么您可以迭代这些方法,并使用此API检查它们的批注: 2) 如果没有注释

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

我正在使用CodeModelAPI生成代码。我得到了每个DAO类,现在想创建EJB服务代码。使用java反射,我试图检查DAO类中声明的方法是否是接口的重写实现方法。还有什么我可以检查的吗?

1)如果重写的方法带有@Overrided annotation,那么您可以迭代这些方法,并使用此API检查它们的批注:


2) 如果没有注释,我认为,唯一的方法是迭代父类和接口,并将其中声明的方法签名与类中的签名进行比较。

问题是可能有注释,也可能没有注释,而您无法检查注释,需要比较签名,如我在2)中所述。其中一个例子是:是的,我看到了。并实现了第二个路由。这不起作用,因为@Override的保留是源代码,所以它不会添加到字节码中,因此在运行时不可用。