我的应用程序允许开发人员创建一些插件。 Сcompliance与基本抽象类确定的要求。每个插件都必须有一个名称。我想通过使用注释来解决这个问题。所以,我定义了我自己的注释名称,如下所示:
@Retention(RetentionPolicy.RUNTIME)
public @interface Name {
public String value();
}
我将这个注释和基础抽象类CommonPlugin放入单独的模块中,并将其构建为JAR文件以与开发人员共享。
然后我导入包并在我测试插件的防御之前放置这个注释,如下所示:
@Name("Test plugin")
public class TestPlugin extends CommonPlugin {
然后我通过URLClassLoader
反映所有给定的插件,并且在TestPlugin类中找不到必要的注释。但是,如果我将Name注释定义到TestPlugin类的同一个包中,我可以找到它。它应该是这样,还是我做错了什么?
答案 0 :(得分:1)
将我的感情转化为答案,以便接受。
确保非限定名称Name
在所有源文件中引用相同的限定名称。在来自不同包的源而不是包含注释的包中,Name
应该有非通配符导入,并且在该其他包本身中不应该有该名称的类。