gpt4 book ai didi

java - Groovy 映射强制生成 _groovyProxy

转载 作者:行者123 更新时间:2023-11-30 10:24:32 26 4
gpt4 key购买 nike

我有一个要实例化的 java 类。

PackageGenerator gen = [
fileName: "file.xml",
platform: "windows",
version: "1.0"]
println ReflectionToStringBuilder.toString(gen);

生产:

PackageGenerator_groovyProxy[fileName=<null>, platform=<null>, version=<null>]

但如果我用 .with 方式编写它:

PackageGenerator gen = new PackageGenerator()
gen.with {
fileName = "file.xml"
platform = "windows"
version = "1.0"
}
println ReflectionToStringBuilder.toString(gen);

产生:

PackageGenerator[fileName="file.xml", platform="windows", version="1.0"]

是什么导致使用 groovy 代理类而不是实际类?

最佳答案

_groovyProxy 后缀在创建 Proxy 实现时添加,如果原始对象不可分配给所需的类型。我相信这里发生的是

PackageGenerator gen = [
fileName: "file.xml",
platform: "windows",
version: "1.0"]

相同
PackageGenerator gen = [
fileName: "file.xml",
platform: "windows",
version: "1.0"] as PackageGenerator

并且由于 Map 无法转换为 PackageGenerator,因此生成代理。

您可以使用 map 构造器轻松克服这个问题

PackageGenerator gen = new PackageGenerator(
fileName: "file.xml",
platform: "windows",
version: "1.0")

哪个实现与你在第二个例子中写的非常接近

关于java - Groovy 映射强制生成 <class>_groovyProxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46478946/

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