Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 如何在JavaEE中查看类的所有注释_Jakarta Ee - Fatal编程技术网

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。