gpt4 book ai didi

斯卡拉 2.8 : use Java annotation with an array parameter

转载 作者:行者123 更新时间:2023-12-04 04:08:29 26 4
gpt4 key购买 nike

我正在尝试使用 Scala 2.8 实现 JavaEE session Bean。
因为它是一个远程 session Bean,所以我必须使用以下 Java 注释对其进行注释:

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Remote {
Class[] value() default {};
}

我只找到 this example对于 Scala 2.7。
在 Scala 2.7 中,可以像这样定义 session bean:
@Remote {val value = Array(classOf[MyEJBRemote])}
class MyEJB
...

我如何以与 Scala 2.8 相同的方式使用此注释?我已经尝试了许多不同的版本,都导致“注释参数需要是一个常量”,“简单表达式的非法开始”。
所有这些定义都不起作用:
@Remote{val value = Array(classOf[MyEJBRemote])}
@Remote(val value = Array(classOf[MyEJBRemote]))
@Remote(Array(classOf[MyEJBRemote]))

最佳答案

您的答案中的语法是正确的。问题是@Remote 注释使用原始类型Class而不是 Class<?> . Java 原始类型是从 Java 1.4 到 Java 1.5 的向后兼容性约束的不幸结果,也是 Scala 编译器中常见的错误来源。

我发现了错误 #3429描述基本相同的问题,并将您的特定问题添加为另一个测试用例。

唯一的解决方法是从有问题的注释中获取源代码,替换 ClassClass<?> ,重新编译它们,然后将该 JAR 放在 Scalac 的类路径前面。除此之外,您应该投票支持将您的电子邮件添加到抄送列表的错误。

关于斯卡拉 2.8 : use Java annotation with an array parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2842174/

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