gpt4 book ai didi

java - 为什么注释属性的值应该是常量表达式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:02 26 4
gpt4 key购买 nike

我有以下代码

 @UIUnitTimeout(8*60*1000) // works
@UIUnitTimeout(TimeUnit.MINUTES.toMillis(8)) // does not work

我知道根据 JLS,只允许常量表达式作为注释属性的值。但为什么?为什么数据类型匹配还不够?如果要在运行时评估表达式,是否有任何可能出错的地方?每个规范背后都有逻辑推理吗?

最佳答案

注解就像类型扩展或关于类型的元数据。

因为 java 是一种静态类型语言(意味着类型在编译时已知),注解属性数据(元数据)在编译时也是已知的似乎是合理的 - 您正在定义/声明关于注解(扩展名)的数据).

作为一个纯粹的实用点,annotation processing ,这是一个编译时(可选)步骤,属性数据必须在编译时已知 - 您尚未达到运行时环境,但您需要属性数据。

关于java - 为什么注释属性的值应该是常量表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14931143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com