当父级是 Map 或 Collection 时,Groovy GString 渲染不会调用重写的 toString() 方法

2023-11-30

这是最小的演示案例:

class T extends HashMap {
  @Override
  String toString() {
    return "foo"
  }
}

def t = new T()
println t.toString()
println "${t}"​

输出是

foo
[:]

So the @Override toString()从未为获取价值而执行GString。如果我在里面放置断点,它永远不会停在那里。我错过了什么还是它是一个错误?以外HashMap and Collection似乎工作正常。


GString不打电话Map.toString()直接调用,而是调用

InvokeHelper.write(Writer out, Object object)

放置断点here看看会发生什么:

我在调试会话中录制了一个简短的视频,向您展示当将此对象放入 GString 中时到底会发生什么:

https://youtu.be/HYHdfmwd-lw

我希望它有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当父级是 Map 或 Collection 时,Groovy GString 渲染不会调用重写的 toString() 方法 的相关文章

  • 如何从命令行运行 spock 测试?

    我已经检查过这个链接 https gist github com ysb33r 5825457 https gist github com ysb33r 5825457 似乎可以这样运行 groovyc groovy java cp gra
  • Groovy 有“use strict”吗?

    我记得从我的 Perl 时代起 使用严格 http perldoc perl org strict html 导致运行时执行额外验证的语句 Groovy 是否有等效的语句 我不喜欢在运行时被编译时检测到的东西所困扰 比如向构造函数传递的参数
  • 从控制器传递 gsp 参数

    我如何通过不是域类实例的控制器将参数传递到groovy服务器页面 您将参数放入返回给 GSP 的模型对象映射中 例如 def index def hobbies basketball photography render view inde
  • 遍历多行字符串

    我得到一些数据 def data some useless text n even more n finally interesting text 我怎样才能得到其中 有趣的部分 所以基本上所有行都不是以 开头的 Groovy 的一种选择是
  • 詹金斯:${BUILD_LOG, maxLines, escapeHtml} 不起作用

    我正在尝试使用 BUILD LOG maxLines escapeHtml 如下所述 如何从 BUILD LOG 变量中获取最后 20 行 https stackoverflow com questions 16089096 how can
  • 如何在 groovy 中将输出重定向到 stderr?

    我正在寻找一种将 groovy 脚本中的输出重定向到 stderr 的方法 catch Exception e println Want this to go to stderr 就在我的脑海中 你不能做一些自我接线吗 def printE
  • 如何在gradle中复制文件?

    我正在尝试将战争档案部署到 Tomcat 中 这是我编写的构建脚本 apply plugin war task deploy dependsOn war copy from build libs into E apache tomcat 8
  • Jenkins 管道和 java.nio.file.* 方法的问题

    我正在尝试使用 java nio file 中的方法在 Jenkins 管道中执行一些基本文件操作 无论代码存在于哪个节点块中 代码都在主节点上执行 在管道中 我已经验证了各个节点块都是正确的 它们唯一地标识了特定的节点 但是 pathEx
  • groovy中bigdecimal的默认比例

    groovy 中 BigDecimal 的默认小数位数是多少 和四舍五入 因此 当尝试进行计算时 def x 10 0 30 0 0 3333333333 def y 20 0 30 0 0 6666666667 基于此 我可以假设它使用比
  • 抑制 Jenkins 文件中的管道输出

    当我在詹金斯上运行构建时 它总是在执行詹金斯步骤时打印管道 控制台当前输出 Build context CI clean app clean BUILD SUCCESSFUL in 22s 2 actionable tasks 2 exec
  • 如何在 WebStorm 中安装 Groovy 插件?

    我正在使用 WebStorm 进行开发 我想要为 Jenkins Groovy 管道提供语法突出显示 使用IntelliJ IDEA来编辑Jenkinsfile是可以的 但是在IDE之间来回切换显然很不方便 我可以安装吗Groovy 插件
  • Groovy - JsonSlurper 解析 JSON 文件

    我有一个类似于下面的 JSON 文档 我正在尝试在 Groovy 中解析它 基本上对于每所学校 学校信息 我想抓住SCHOOL COUNTRY和其他领域 我正在尝试下面的代码 但它没有返回我需要的内容 对于列出的每所学校 1 000 所 我
  • 执行Jenkinsfile时如何获取管道配置字段“脚本路径”?

    如何从 Jenkinsfile groovy 获取 Jenkins 中管道配置字段 脚本路径 的内容 在此示例中 我想在执行 Jenkinsfile 本身时获取字符串 Apps mq logger Jenkinsfile 您可以通过这种方式
  • 为什么 GORM 不保存我的对象?

    如果我在 Grails 控制台中执行此代码 def p new Post title T p save flush true or p save Post count GORM 没有抛出任何异常 但数据没有保存在我的数据库中 我究竟做错了什
  • 将所有构造函数参数作为实例属性添加到 PyCharm 中的类中

    我正在使用 PyCharm 我开始定义一个类 class A def init self a b c 我希望它看起来像这样 class A def init self a b c self a a self b b self c c 使用
  • 如何生成源文件并用gradle编译

    我有一个类似于以下内容的 gradle 构建脚本 apply plugin war task genSources lt lt here I generate some java files making sure that source
  • 修改 Groovy 中现有的 xml 文件

    我有一个 pom xml 文件 例如
  • 如何将用户输入密码与凭据密码进行比较

    我有一个脚本化管道 它使用以下命令请求用户的密码input函数并将其与用户保存的凭据密码进行比较 如果用户输入的是一个类型string然后就可以了 但是 当我将输入类型更改为password 因此当用户键入它时 它在屏幕上不可见 它会失败并
  • 如何在 Gradle 中使用 if else 条件

    有人可以告诉我如何在 gradle 脚本中编写 if else 条件吗 我的意思是我有两种不同类型的 zip 文件 一种是 LiceseGenerator 4 0 0 58 另一种是 CLI 4 0 0 60 我的部署脚本工作正常 但我使用
  • 不带破折号的 CliBuilder 参数

    使用 Groovy CliBuilder 理想情况下我希望有一个命令行 如下所示 MyProgram groovy CommandName arg1 arg2 arg3 是否可以使用 CliBuilder 解析提取 CommandName

随机推荐

  • BluetoothChat 示例:NullPointerException [重复]

    这个问题在这里已经有答案了 可能的重复 getActionBar 返回 null 完全的安卓菜鸟 我正在尝试从 Galaxy S3 运行 BluetoothChat 示例 但它似乎在应用程序运行时崩溃了 这是 LogCat 输出 09 14
  • DataReader 为 null 或为空

    Using C 我有一个数据读取器 它从 mysql 数据库返回记录列表 我正在尝试编写代码来检查数据读取器是否为空 其背后的逻辑是 如果数据读取器有字段 则显示信息 否则隐藏该字段 我努力了 cmd1 new OdbcCommand Se
  • R 经济衰退日期转换

    我正在通过 R 将衰退带数据下载到 R 中quantmod 现在 这是一个二进制信息 xts 格式 看起来像这样 仅显示第一个衰退期 1857 01 01 0 1857 02 01 0 1857 03 01 0 1857 04 01 0 1
  • 使用反射动态地使用其名称检索静态变量

    如何使用 Java 反射动态地使用名称来检索静态变量 如果我有包含一些变量的类 public class myClass final public static string cfg1 01 02 81 82 final public st
  • Python3:尝试在非包中进行相对导入

    我对这个基本问题感到非常抱歉 因为它类似于 被相对进口所困扰 但我正在尝试遵循 PEP328http www python org dev peps pep 0328 guido s decision这对我不起作用 这些是我的文件 dev
  • Python - Pxssh - 尝试登录远程服务器时出现密码拒绝错误

    我正在尝试使用 pexpect 模块 pxssh 登录我的一台服务器 我的密码被拒绝 我想我知道问题是什么 但不知道如何解决 问题是 当我登录服务器时有一个欢迎横幅 无法更改横幅 并且预期会感到困惑 这是我的代码 import pxssh
  • 从 Json 字符串创建 Python 对象 [重复]

    这个问题在这里已经有答案了 WebSocket 连接到地震门户网站正在向我发送有关地震的数据 这些数据打包在 JSON 对象中 我将其作为多行字符串获取 例如 action create
  • Three.js创建的立方体是干涉的,旋转相机时这些立方体的部分会变成透明,

    我使用 Three js CanvasRender 创建一些立方体 我遇到一个问题 旋转相机时 这些立方体的部分部分会变成透明 请看图片 https i stack imgur com pafn0 jpg 当我将 CanvasRender
  • 请求在 Apple 设备上全屏显示 HTML5 视频

    大家好 我有自定义全屏图标 可以在我的视频上触发全屏 一切都很好 只是它不能在苹果设备上运行 你知道如何解决这个问题吗 fullscreen btn click function fullscreen true var mediaEleme
  • 在 Android Studio 中创建单独的测试模块/项目

    我使用的是 Android Studio 版本 0 8 14 目前 新建Android项目后 默认是test源码文件夹androidTest位于src的文件夹app模块 与main 其中包含应用程序源代码 但是 如果出于任何特定原因 我想将
  • 将异常从 Servlet 重定向到默认错误 JSP 的正确技术是什么?

    我需要有一个默认的错误 JSP 页面 当 servlet 抛出异常时显示该页面 并且该页面将显示堆栈跟踪 我怎么做 是否有正确的技术 由 API 提供 或者我必须手动执行 我的意思是 将抛出的异常作为属性发送 然后自己处理它 Thanks
  • Python/pygame - 将图像转换为视频

    我正在使用 python 中的 Pygame 模块用网络摄像头拍照 问题是我想导出视频文件 不关心什么类型 以在其他地方使用 由于pygame无法直接导出视频 我猜有两种方法可以做到 以某种方式将 Pygame 创建的照片拼接成视频 我的首
  • jQuery $.get() 函数成功并返回 200,但在 Firefox 中没有返回任何内容

    我正在编写我的第一个 jQuery 但遇到了问题jQuery get 我称之为 get url updateList 其中 updateList 的定义如下 function updateList data if data contentl
  • 代码先创建表

    我正在关注this教程 我尝试在用户配置文件表中添加一些新列 我尝试创建一个新表 public class UsersContext DbContext public UsersContext base DefaultConnection
  • ReferenceError:未定义要求(Webstorm)

    尝试做一些非常基本的事情 但遇到了障碍 var mongoose require mongoose mongoose connect mongodb localhost jetbrains var Product mongoose mode
  • 如何在 Mac OS X 中处理 python 中 raw_input() 的 EOFError

    我的 python 程序有两次调用raw input 首先raw input 是从用户那里获取多行输入 用户可以发出 Ctrl D 在 Windows 中为 Ctrl Z 来结束输入 Second raw input 应该使用 y n 类型
  • 适用于 Android 的 SAML 客户端?

    我正在开发一个项目 需要解析一些受保护网页中的一些数据 为了获得这些页面的访问权限 我必须克服 SAML 身份验证形式 Shibboleth 有人能够在 Android Java 中实现这个标准吗 我已经读过这个线程 Android 的 S
  • 缓冲读取器线程安全吗?

    有什么方法可以获得线程安全的缓冲读取器 当我运行此代码时 我得到了以下信息 Threadid 28 ObjectReference de factfinder resource Resource 1b7aeb4 Threadid 28 Ob
  • 从另一个应用程序控制一个应用程序

    I read 这个问题 and 另一个问题我了解如何从另一个应用程序启动应用程序 让我们称另一个应用程序为启动器应用程序 然而 我的目标不仅仅是启动一个应用程序 而是使用它的功能 所以我想启动器应用程序应该使用意图 显式或隐式 启动活动 我
  • 当父级是 Map 或 Collection 时,Groovy GString 渲染不会调用重写的 toString() 方法

    这是最小的演示案例 class T extends HashMap Override String toString return foo def t new T println t toString println t 输出是 foo S