Java注解定义编译报错:int[]无法转换为int问题排查
问题原因解析
这是Java注解的语法规则限制导致的:
- Java注解中,数组类型的元素默认值必须使用数组初始化器(
{元素1, 元素2, ...}形式),直接引用静态final数组变量是不被允许的。 - 第一种写法里,
Lit.LIT是静态final的int数组变量,但注解默认值需要在编译阶段把值直接嵌入元数据,引用外部数组变量无法让编译器直接获取数组具体内容并嵌入,编译器会误判为你试图用数组类型赋值给单个int元素,这就是报错int[] cannot be converted to int的根源。 - 第二种写法
{1,2}是标准的数组初始化语法,编译器能直接解析出数组的具体元素,将其作为默认值嵌入元数据,因此可以正常编译。
内容的提问来源于stack exchange,提问作者anupamD
相关产品推荐
相关产品推荐

