Вы можете использовать константу (то есть статическую, конечную переменную) в качестве параметра для аннотации. В качестве быстрого примера я использую что-то вроде этого довольно часто:
import org.junit.Test;
import static org.junit.Assert.*;
public class MyTestClass
{
private static final int TEST_TIMEOUT = 60000; // one minute per test
@Test(timeout=TEST_TIMEOUT)
public void testJDK()
{
assertTrue("Something is very wrong", Boolean.TRUE);
}
}
Обратите внимание, что константу TEST_TIMEOUT
можно передать прямо в аннотацию.
Случайно, я не помню, чтобы когда-либо пробовал это с массивом, поэтому вы можете столкнуться с некоторыми проблемами с небольшими различиями в том, как массивы представляются в виде параметров аннотации по сравнению с переменными Java? Но что касается другой части вашего вопроса, вы можете без проблем использовать постоянную строку.
РЕДАКТИРОВАТЬ: я только что попробовал это с массивом String, и не столкнулся с проблемой, которую вы упомянули - однако компилятор сказал мне, что "значение атрибута должно быть постоянным", несмотря на массив определяется как public static final String[]
. Возможно, ему не нравится тот факт, что массивы изменчивы? Хм ...