В 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;
Разве использование временной единицы не является константой?1 ответ:
Это
public final static long TESTNG_TEST_TIMEOUT = 300000;
- это постоянная переменная, тип постоянного выражения.
Это
public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);
- нет.
Члены аннотацииожидают постоянные выражения (и некоторые другие вещи, такие как перечисления и литералы
Class
).