In Java why this error: 'attribute value must be constant'?

In Java why this error: 'attribute value must be constant'?

我有一些 TestNG 代码,我在其中传递了一个名为 timeOut = TESTNG_TEST_TIMEOUT 的测试注释参数。

@Test(description = "Tests something.", groups = { "regression" }, 
   timeOut = TESTNG_TEST_TIMEOUT, enabled = true)

在我的 TestBase class 我有这个成员:

public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);

当我使用上面的代码行时,我在 Eclipse 中遇到 'attribute value must be constant' 错误。

但是,如果我像这样简单地定义成员,它就起作用了:

public final static long TESTNG_TEST_TIMEOUT = 300000;

TimeUnit的使用不是常量吗?

这个

public final static long TESTNG_TEST_TIMEOUT = 300000;

是一个constant variable, a type of constant expression

这个

public final static long TESTNG_TEST_TIMEOUT = TimeUnit.MINUTES.toMillis(5);

不是。

注释成员 expect 常量表达式(以及一些其他的东西,例如枚举和 Class 文字)。