gpt4 book ai didi

java - 为什么下面的注解在 Java 中合法而在 groovy 中不合法?

转载 作者:搜寻专家 更新时间:2023-11-01 02:24:37 24 4
gpt4 key购买 nike

我想使用 Jasypt 库为我的应用程序添加加密。他们的集成页面说要添加 @TypeDef 注释:

使用@TypeDef 注释定义加密类型,它可以在持久化实体类中或在单独的 package-info.java 文件中的@TypeDefs 声明中”:

@TypeDef(
name="encryptedString",
typeClass=EncryptedStringType.class,
parameters= {
@Parameter(name="encryptorRegisteredName", value="myHibernateStringEncryptor")
}
)

但是,我注意到当我在 groovy 文件上尝试这个时,我收到了一个语法错误。

Groovy:意外标记:} @ 第 12 行,第 3 列。

当我将确切的代码复制并粘贴到 Java 文件中时,它工作正常。如果我删除它起作用的 parameters 参数,我认为 parameters { } 参数被 groovy 解释为闭包。

编辑:我最终将注释移到了 package-info.java,但我仍然想知道为什么这在 groovy 中不起作用。

最佳答案

问题可能出在参数 block :

parameters= {
@Parameter(name="encryptorRegisteredName", value="myHibernateStringEncryptor")
}

虽然花括号可以在 java 中用于指定数组的静态初始化 block ,但在 groovy 中,花括号是闭包的语法标记,这不是您想要的。我想以下可能会起作用:

parameters= [
@Parameter(name="encryptorRegisteredName", value="myHibernateStringEncryptor")
]

请注意硬括号,它是匿名创建的列表/ map 的 groovy 标记。

关于java - 为什么下面的注解在 Java 中合法而在 groovy 中不合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28120084/

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