使用静态导入编译运行时参数注释时出现“不兼容类型”错误

妮维卡斯托思

使用以下注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PARAMETER)
public @interface Param {
    String value();
}

和常量类:

public final class ExampleConstants {
    public static final String classConstant  = "classConstant";
    public static final String methodConstant = "methodConstant";
    public static final String paramConstant  = "paramConstant";
}

以下课程:

import com.example.annotations.Control;
import com.example.annotations.Param;
import com.example.annotations.Task;

import static com.example.ExampleConstants.*;

@Task(value = classConstant)
public class ExampleClass {
    @Control(methodConstant)
    public Object control(@Param(paramConstant) ExampleParam paramConstant) {
        return null;
    }
}

无法编译错误:

Error:(12, 34) java: incompatible types
  required: java.lang.String
  found:    com.example.ExampleParam

如果将@Param批注声明更改为不使用静态导入,则会按预期编译:

public Object control(@Param(ExampleConstants.paramConstant) ExampleResult paramConstant)

我正在寻找以下方面的澄清:

  • 为什么静态导入引用无法编译
  • 为什么编译错误将“找到的类型”声明为方法参数类型
  • 为什么类引用导入会编译
  • 我该怎么做才能使静态导入工作(如果可能)
卡佩克斯

对于注释值不能具有静态和/或通配符导入没有限制。

错误表明值是类型ExampleParam-这里的问题是方法的参数与导入的常量具有相同的名称:paramConstant

在带有的示例中,该ExampleConstants.paramConstant值更具体,因此不再隐藏。

重命名参数,因此它不再隐藏导入的值:

public Object control(@Param(paramConstant) ExampleParam exampleParam)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

编译Java运行时库时出现Protobuf错误

来自分类Dev

编译Java运行时库时出现Protobuf错误

来自分类Dev

比较不同/单独表列中的值时,出现“类型不匹配”运行时错误

来自分类Dev

使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

来自分类Dev

使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

来自分类Dev

使用g ++编译Objective-C项目时出现运行时错误

来自分类Dev

如何使用运行时类型的编译时接口?

来自分类Dev

运行时错误与编译时错误

来自分类Dev

尝试使用pip时出现运行时错误

来自分类Dev

使用动态数组时出现运行时错误 1004

来自分类Dev

尝试检查单元格是否包含整数时出现运行时错误 13 类型不匹配

来自分类Dev

使用隐式Lambda时出现不兼容的类型错误

来自分类Dev

在IntelliJ IDEA 13中运行已编译的Groovy代码时出现运行时错误

来自分类Dev

错误:Composer运行时与客户端不兼容

来自分类Dev

在具有例程调用的并行区域中使用 PGI 而不是 Cray 进行编译时出现运行时错误

来自分类Dev

Hartl教程3.1:导航到“主页”静态页面时出现500运行时错误

来自分类Dev

C#中的运行时类型与编译时类型

来自分类Dev

C#中的运行时类型与编译时类型

来自分类Dev

当运行时类型也是泛型类型时,将方法引用用作期望使用泛型类型接口的方法的lambda时,编译器错误

来自分类Dev

为什么dart不会抛出编译时错误类型异常。运行时间?

来自分类Dev

调用Function时VBScript运行时错误'800a000d'类型不匹配

来自分类Dev

运行Go代码时出现运行时错误

来自分类Dev

运行for循环时出现奇怪的运行时错误'424'

来自分类Dev

运行“粘贴”时,出现VBA运行时错误438

来自分类Dev

如何使用引用导致编译时错误或运行时错误?

来自分类Dev

在编译时在C ++元编程中使用运行时参数(变量)

来自分类Dev

将作为通用类型参数的运行时Dictionary <K,V>强制转换为其正确的编译时类型

来自分类Dev

Excel VBA运行时错误类型不匹配13

来自分类Dev

运行时错误13 /类型不匹配

Related 相关文章

  1. 1

    编译Java运行时库时出现Protobuf错误

  2. 2

    编译Java运行时库时出现Protobuf错误

  3. 3

    比较不同/单独表列中的值时,出现“类型不匹配”运行时错误

  4. 4

    使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

  5. 5

    使用VBA从受保护的网站导入Excel中的数据时出现运行时错误438

  6. 6

    使用g ++编译Objective-C项目时出现运行时错误

  7. 7

    如何使用运行时类型的编译时接口?

  8. 8

    运行时错误与编译时错误

  9. 9

    尝试使用pip时出现运行时错误

  10. 10

    使用动态数组时出现运行时错误 1004

  11. 11

    尝试检查单元格是否包含整数时出现运行时错误 13 类型不匹配

  12. 12

    使用隐式Lambda时出现不兼容的类型错误

  13. 13

    在IntelliJ IDEA 13中运行已编译的Groovy代码时出现运行时错误

  14. 14

    错误:Composer运行时与客户端不兼容

  15. 15

    在具有例程调用的并行区域中使用 PGI 而不是 Cray 进行编译时出现运行时错误

  16. 16

    Hartl教程3.1:导航到“主页”静态页面时出现500运行时错误

  17. 17

    C#中的运行时类型与编译时类型

  18. 18

    C#中的运行时类型与编译时类型

  19. 19

    当运行时类型也是泛型类型时,将方法引用用作期望使用泛型类型接口的方法的lambda时,编译器错误

  20. 20

    为什么dart不会抛出编译时错误类型异常。运行时间?

  21. 21

    调用Function时VBScript运行时错误'800a000d'类型不匹配

  22. 22

    运行Go代码时出现运行时错误

  23. 23

    运行for循环时出现奇怪的运行时错误'424'

  24. 24

    运行“粘贴”时,出现VBA运行时错误438

  25. 25

    如何使用引用导致编译时错误或运行时错误?

  26. 26

    在编译时在C ++元编程中使用运行时参数(变量)

  27. 27

    将作为通用类型参数的运行时Dictionary <K,V>强制转换为其正确的编译时类型

  28. 28

    Excel VBA运行时错误类型不匹配13

  29. 29

    运行时错误13 /类型不匹配

热门标签

归档