В Java почему эта ошибка: "значение атрибута должно быть постоянным"?
У меня есть некоторый код TestNG, где я передаю параметр аннотации теста под названием timeOut = TESTNG_TEST_TIMEOUT
.
@Test(description = "Tests something.", groups = { "regression" },
timeOut = TESTNG_TEST_TIMEOUT, enabled = true)
И в моем классе TestBase у меня есть этот член:
public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);
Когда я использую указанную выше строку кода, я получаю ошибку "значение атрибута должна быть постоянной" в Eclipse.
Но, если я просто определяю член так, он работает:
public final static long TESTNG_TEST_TIMEOUT = 300000;
Является ли использование TimeUnit не константой?
Ответы
Ответ 1
Это
public final static long TESTNG_TEST_TIMEOUT = 300000;
является постоянной переменной, типом константного выражения.
Это
public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);
нет.
Члены аннотации ожидать постоянных выражений (и несколько других вещей, таких как перечисления и Class
).