作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个要实例化的 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/
我有一个要实例化的 java 类。 PackageGenerator gen = [ fileName: "file.xml", platform: "windows",
我是一名优秀的程序员,十分优秀!