1

我的应用程序允许开发人员创建一些插件。符合基本抽象类确定的要求。每个插件都必须有一个名称。我想通过使用注释来解决这个问题。所以,我定义了自己的注解名称如下:

@Retention(RetentionPolicy.RUNTIME)
public @interface Name {
public String value();
}

我把这个注释和基础抽象类 CommonPlugin 放到单独的模块中,并将其构建为 JAR 文件以与开发人员共享。

然后我导入包并将这个注释放在我测试插件的定义之前,如下所示:

@Name("Test plugin")
public class TestPlugin extends CommonPlugin {

然后我反映了所有给定的插件,URLClassLoader并且在 TestPlugin 类中找不到必要的注释。但是如果我将 Name 注释定义到 TestPlugin 类所在的同一个包中,我可以找到它。应该是这样还是我做错了什么?

4

1 回答 1

1

将我的评论变成答案,以便可以接受。

确保非限定名称Name引用所有源文件中的相同限定名称。在来自与包含注释的包不同的包的源中,应该有一个非通配符导入Name,并且在另一个包本身中不应该有具有该名称的类。

于 2012-08-02T11:30:56.493 回答