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