Jakarta ee 如何在JavaEE中查看类的所有注释
假设我有一节课Jakarta ee 如何在JavaEE中查看类的所有注释,jakarta-ee,Jakarta Ee,假设我有一节课 @SessionScoped class MyService implements Serializable{ .... } 它(可能)还有注释@Default@Any 如何查看此类的所有注释?您可以使用: Annotation[] annotations = MyService.class.getDeclaredAnnotations(); 有关更多详细信息,请查看文档。我猜您是在混合注释和限定符。注释只是一个java语言标记,您必须通过在java源文件中插入一段文
@SessionScoped
class MyService implements Serializable{
....
}
它(可能)还有注释@Default@Any
如何查看此类的所有注释?您可以使用:
Annotation[] annotations = MyService.class.getDeclaredAnnotations();
有关更多详细信息,请查看文档。我猜您是在混合注释和限定符。注释只是一个java语言标记,您必须通过在java源文件中插入一段文本-
@MyAnnotationName
来显式添加到类中。在运行时,您只能确定是否对特定类或方法进行了注释(如果注释持续存在于类文件中)。一旦您的类被编译,任何人都不能向其添加其他注释。@Default
和@Any
是CDI限定符注释。在部署应用程序(或初始化CDI容器)期间,CDI管理器将检查所有符合条件的类,并将它们转换为CDIBean。它将扫描类上的CDI注释,例如@SessionScoped
,并在给定bean上注册适当的限定符。它还可以向您的bean添加其他限定符,即使您没有在java代码中明确定义它们-如上面提到的Default
和Any
但是,此信息不存储在.class
文件中,它是与特定bean实例或bean定义相关的运行时信息,包含在CDI管理器中。回到你的问题上来。如果您想获得某个Bean或Bean类的所有CDI限定符,那么需要查询Bean管理器,而不是该类。以下应该可以工作(尽管我没有测试它):
CDI.current()
快乐黑客 我尝试过这个,但是我只看到SessionScoped,而不是Default。