我的项目使用约定来使用class.getName()
作为OSGi容器的名称。大多数现有组件都有一个public static final String
常量,其中包含如下名称:
package mypackage;
@Component(name = MyClass.COMPONENT_NAME)
public class MyClass {
public static final String COMPONENT_NAME = "mypackage" + ".MyClass";
...
}
在项目中创建我的第一个组件时,我尝试了这个:
package mypackage;
@Component(name = MyClass.COMPONENT_NAME)
public class MyClass {
public static final String COMPONENT_NAME = MyClass.class.getName();
...
}
但是,编译器在注释中抱怨name
应该是常量。
为什么这不起作用?
答案 0 :(得分:1)
在你的情况下是方法调用,它将在初始化类时执行(在运行时)。 价值
编译时不知道MyClass.class.getName()
方法调用。这是抱怨的原因。