我的项目使用一个约定,即使用 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
应该是一个常量。
为什么这不起作用?
最佳答案
在您的情况下,是方法调用,该方法调用将在类初始化时(在运行时)执行。 值(value)
MyClass.class.getName()
方法调用在编译时是未知的。这就是提示的原因。
关于java - 如何使用类名来命名我的 OSGi 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26482715/