Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/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
在Java中,有没有办法在注释属性(比如值)中使用当前类名?_Java_Annotations - Fatal编程技术网

在Java中,有没有办法在注释属性(比如值)中使用当前类名?

在Java中,有没有办法在注释属性(比如值)中使用当前类名?,java,annotations,Java,Annotations,我想做的是使用一个通用函数,根据特定于类的唯一标识符,为各个类中使用的一个/多个注释定义不同的“值”属性,其中最明显的是类名 我正在使用NetBeans。我使用Ctrl+Space关键字检查自动完成建议。似乎没有办法做到这一点。这样做可能存在哪些瓶颈 一些代码 @ManagedBean @CustomScoped(value = uniqueFunction(this.class.name())) public class DetectionMethodCB extends CommonChil

我想做的是使用一个通用函数,根据特定于类的唯一标识符,为各个类中使用的一个/多个注释定义不同的“值”属性,其中最明显的是类名

我正在使用NetBeans。我使用Ctrl+Space关键字检查自动完成建议。似乎没有办法做到这一点。这样做可能存在哪些瓶颈

一些代码

@ManagedBean
@CustomScoped(value = uniqueFunction(this.class.name()))
public class DetectionMethodCB extends CommonChildCB<DetectionMethod> implements Serializable {

}
@ManagedBean
@自定义范围(value=uniqueFunction(this.class.name())
公共类检测方法CB扩展CommonChildCB实现可序列化{
}

不,这是不可能的。如果要将类指定为注释中的值,则必须使用类文字。因此,函数不是选项:

当且仅当下列条件之一为真时,元素类型T与元素值V相称:

[……]

如果T是类,或者是类的调用,而V是类文本 (§15.8.2)


你能举个例子(甚至是伪代码)说明你在代码中要做什么吗?不能。注释属性值必须是编译时常量。只是好奇。。。理论上为什么不可能呢?请注意,这样做没有任何意义。获取注释实例的唯一方法是通过声明/注释类。你已经知道了,没错。但在我的特殊情况下,我使用的是JSF自定义范围,它要求控制器具有唯一的范围变量。如果我可以自动(而不是重复手动输入唯一的名称)将值放入注释中,我就可以识别范围(一个包含控制器bean属性的“映射”)。如果不输入value参数,我就无法确定要将控制器bean实例放入的范围。也许这是JSF的注释配置问题。。。它们可以自动识别实例化bean实例的范围,并且只需要不带value参数的注释。