我认为这在Java中是不可能的,因为注释及其参数在编译时被解析.我有一个如下界面,
public interface FieldValues {
String[] FIELD1 = new String[]{"value1", "value2"};
}
Run Code Online (Sandbox Code Playgroud)
和另一个班级,
@SomeAnnotation(locations = {"value1", "value2"})
public class MyClass {
....
}
Run Code Online (Sandbox Code Playgroud)
我用注释标记了很多类,我想知道我是否可以避免在每个注释中指定字符串而我更愿意使用
@SomeAnnotation(locations = FieldValues.FIELD1)
public class MyClass {
....
}
Run Code Online (Sandbox Code Playgroud)
但是这会产生编译错误,例如注释值应该是数组初始化器等.有人知道如何使用String常量或String []常量来为注释提供值吗?
我使用以下注释:
@ActivationConfigProperty(
propertyName = "connectionParameters",
propertyValue = "host=127.0.0.1;port=5445,host=127.0.0.1;port=6600"),
public class TestMDB implements MessageDrivenBean, MessageListener
Run Code Online (Sandbox Code Playgroud)
我想拉出每个IP地址和端口并将它们存储在一个文件中jmsendpoints.properties......然后动态加载它们.像这样的东西:
@ActivationConfigProperty(
propertyName = "connectionParameters",
propertyValue = jmsEndpointsProperties.getConnectionParameters()),
public class TestMDB implements MessageDrivenBean, MessageListener
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?