我想知道是否有办法制作一个通用接口,可以使用所有在类级别具有特定注释的类来实现。
例如:
@XmlRootElement
公共类订阅{...}
@XmlRootElement
公共类作者{...}
我想创建一个适用于这两个类的通用接口(以及更多内容)。 有没有办法实现这个目标?
答案 0 :(得分:2)
接口和继承用于沿着继承图“垂直”传播功能。
注释适用于可以固定在类,方法等上的其他功能,并且实际上与接口无关。
如果您事先知道您的课程将是什么以及它们如何相互关联,您可能根本不需要注释。这样做的原因是你可以让它们实现标记接口(java.io.Serializable
就是它们的一个例子),这几乎与类级别注释(没有参数)相同,除了更容易使用。
答案 1 :(得分:1)
使用标准Java是不可能的,但您可以使用AspectJ Inter-type declarations。
例如,这方面,会将WhatEverInterface和implmentation添加到每个用@XmlRootElement
进行反对的类中。
public aspect MyAspect {
declare parents: (@XmlRootElement) implements WhatEverInterface;
public void WhatEverInterface.doSomething() {
System.out.println("something");
}
}
答案 2 :(得分:0)
这很简单:
interface XmlProcessor
{
public void process(XmlRootElement root);
}