我可以为具有特定注释的类创建通用接口吗?

时间:2011-03-22 13:09:53

标签: java generics inheritance annotations jaxb

我想知道是否有办法制作一个通用接口,可以使用所有在类级别具有特定注释的类来实现。

例如:

  

@XmlRootElement
公共类订阅{...}

@XmlRootElement
公共类作者{...}

我想创建一个适用于这两个类的通用接口(以及更多内容)。 有没有办法实现这个目标?

3 个答案:

答案 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);
}