Groovy 家长/孩子私人领域访问奇怪与关闭

2024-01-10

在 Groovy 中,我有一个父类和一个子类,其中父类的构造函数尝试使用闭包设置父类字段的值,如以下代码所示:

try {
  def x = new ChildClass()
} catch (ex) {
  ex.printStackTrace(System.err)
}

class ParentClass {
  private values = []

  ParentClass(columnCount) {
    columnCount.times { values.add('') }
  }
}

class ChildClass extends ParentClass {
  ChildClass() {
    super(20)
  }
}

但是,当我运行此代码时,我收到 groovy.lang.MissingPropertyException 并显示消息“没有此类属性:类的值:ChildClass”。但是,如果我更改父类的构造函数以不使用带有 times 方法的闭包,如下例所示:

try {
  def x = new ChildClass()
} catch (ex) {
  ex.printStackTrace(System.err)
}

class ParentClass {
  private values = []

  ParentClass(columnCount) {
    def i
    for (i = 0; i < columnCount; i++) {
      values.add('')
    }
  }
}

class ChildClass extends ParentClass {
  ChildClass() {
    super(20)
  }
}

有用。有人可以向我解释这种行为吗?我不明白为什么 Groovy 认为值字段是子类的属性。我正在使用 Groovy 版本“Groovy 版本:1.6.3 JVM:1.5.0_18”。


这是当前版本的 groovy 中的一个已知错误,目标是在 groovy 2.0 中修复。看GROOVY-3073 https://issues.apache.org/jira/browse/GROOVY-3073.

发生这种情况是因为元类中存在范围界定错误,第一个示例中的闭包无法看到私有类级别变量。

解决这种情况问题的一个潜在解决方案是在超类中声明一个本地别名变量,这可以解决闭包中的范围问题。将构造函数更改为:

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

Groovy 家长/孩子私人领域访问奇怪与关闭 的相关文章

  • 用于 Java 集成测试的 Groovy 是否有更好的替代方案? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我计划使用其编程接口来测试我的基于 Java 的 Web 应用程序 为此 我打算使用它们的 RMI We
  • 异步作业出错

    我正在尝试创建一个不会阻止请求的异步任务 用户发出请求 任务将启动 控制器将呈现 作业正在运行 这是为了避免请求被阻止等待任务完成 任务完成后 它将执行 onComplete 并对该任务的结果执行某些操作 例如调用将向用户发送邮件的服务 E
  • 如果我在 grails 中使用 groovy sql 类,它是否使用 grails 连接池?

    来自 sql 文档中的以下示例 如果我使用这两种方法之一在 Grails 服务类中创建 sql 实例 它会使用 Grails 连接池吗 它会参与任何交易功能吗 我需要自己关闭连接吗 还是会自动回到池子里 def db url jdbc hs
  • Groovy 中没有参数的模拟静态方法

    我需要模拟一个静态方法 我正在使用 EMC 方法 描述于使用 groovy 模拟静态方法 http groovy codehaus org Mocking Static Methods using Groovy 像这样 TestDaemon
  • 使用soapUI中的Groovy teststep将请求/响应文件存储在本地目录中

    通过soapUI中的常规测试步骤 我希望所有请求和响应文件都存储在具有系统日期的本地目录中 SoapUI 中的常规测试步骤 def name context expand Input TG def locatie context expan
  • 漏洞! “语义分析”阶段的异常

    我有一个使用 Gradle 1 10 和 jdk1 8 的 1 1 7 spring boot 应用程序 我使用 Groovy Spock 进行测试它有两个依赖项 使用 Apache Maven 3 1 1 和 jdk 1 8 构建的 ja
  • 为什么 Groovy/Grape 不能解析来自 Maven Central 的工件?

    通过全新下载的 Groovy 2 1 9 我创建了 Test Groovy Grab commons io commons io 1 2 import org apache commons io CopyUtils println Reso
  • 将结果行强制转换为对象

    有没有办法将调用存储过程获得的结果行强制转换为特定对象 以便我可以仅将该对象的列表传递到视图中 我知道我可以使用 Node list 之类的东西来做到这一点 但我最终将用一个相当复杂的存储过程替换 getnodes 该存储过程创建临时表并执
  • IntelliJ + Groovy + Spock:没有为模块定义 Groovy 库

    我一直在尝试在 IntelliJ IDEA 中创建一个带有 Spock 测试的 Groovy 项目 以下是我遵循的步骤 创建 Groovy 项目并添加 Maven 支持 添加了 Spock 依赖项和插件 我使用的 POM 与此非常相似 ht
  • Groovy 二维数组

    我有3个数组 l1 l2 and l3 每个都有 5 个字符 e g l1 A B C D E 二维数组由这些组成 screen l1 l2 l3 所以它看起来像这样 screen 我怎样才能迭代这个数组 我打电话吗screen 5 or
  • 如何从 Jenkins 文件调用 groovy 脚本?

    我正在尝试将 Jenkinsfile 中的内容分离成一个常规脚本来制作 但它无法调用这些脚本 这是代码 usr bin env groovy node test node stage Checkout echo BRANCH NAME en
  • Groovy 有“use strict”吗?

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

    在命令 shell 中执行 java 类时出现以下异常 Exception in thread main java lang NoClassDefFoundError groovy lang GroovyObj ect at java la
  • 您可以使用 Jenkins Pipeline 解析 TAP 格式吗?

    我正在尝试解析 BATS 脚本的输出 https github com gaia adm docker bench test https github com gaia adm docker bench test 输出为 TAP 格式 我稍
  • 遍历多行字符串

    我得到一些数据 def data some useless text n even more n finally interesting text 我怎样才能得到其中 有趣的部分 所以基本上所有行都不是以 开头的 Groovy 的一种选择是
  • SOAPUI:如何包含外部文件中的 Groovy 脚本

    How can I include groovy script from an external file 我试图使用 def script new GroovyScriptEngine d soapui payment v2 with l
  • 如何在 Grails Geb/Spock 测试用例中获取 sessionFactory?

    我想我需要在 GebSpec 测试中刷新 hibernate 会话 所以我想获取 sessionFactory 看起来应该被注入 但是当我做这样的事情时 class MySpec extends GebSpec def sessionFac
  • 使用“评估”功能。为什么它不起作用?

    这段代码 evaluate def test println Test is successful test 结果异常 致命 没有方法签名 script1409644336796288198097 test 适用于参数类型 值 可能的解决方
  • 修改String字段的getter的返回值

    假设我的应用程序中有一些类似于域类的类 其中包含一些 Long Double Date 和 String 字段 这些类使用一些公共字段和一些公共方法扩展了基类 每当我访问 String 类字段 通过 getter 时 我想对返回的值进行一些
  • 如何在 WebStorm 中安装 Groovy 插件?

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

随机推荐

  • $.post 和 $.ajax 之间的区别?

    很好奇是否有人知道数据参数有什么区别 我有一个 post方法需要一个 myform serialize 作为我的数据参数并且有效 如果我尝试使用相同的 ajax 方法 它不起作用 因为我的数据参数看起来不正确 有谁知道其中的区别以及我可以用
  • 如果这些容器属于不同的层,那么每个应用程序拥有许多 Castle Windsor 容器是否正确?

    我最近一直在玩温莎城堡 并意识到我可以用它来支持我目前已经使用的类似容器的对象 到目前为止 我只阅读了有关每个应用程序只有一个容器实例的应用程序的信息 如果这些容器属于不同的层 那么每个应用程序有许多容器是否正确 我问这个问题的原因是因为我
  • 如何根据R中行之间的日期差异过滤行?

    每个内id 我想保留至少相隔 91 天的行 在我的数据框中df below id 1有 5 行并且id 2有 1 行 For id 1 我想只保留第一 第三和第五行 这是因为如果我们比较第一个日期和第二个日期 它们相差 32 天 因此 删除
  • 将属性添加到类型而不是类型实例的隐式转换

    我正在阅读一些较旧的 Scala 帖子 以更好地理解类型类 然后我运行了 穿过this one https stackoverflow com questions 8524878 implicit conversion vs type cl
  • 在 HTML 中调用 Google Apps 脚本函数

    我担任一支运动队的教练并为其建立了一个网站 我想在管理页面添加一个按钮 单击该按钮即可快速向团队中的每个人发送电子邮件 这封电子邮件的内容如下 今天的日程安排已更改 请访问网站了解更多信息 我确信通过 Outlook 中的通讯组列表或其他东
  • Android:PhoneLookup 的目录数据提供程序

    我正在编写一个自定义 Android 联系人目录 我已经实现了 ContactsContract Directory 提供程序 并且从手机应用程序中进行搜索工作正常 我现在面临的问题是 当我有来电 去电时 Android 拨号器不会查询我注
  • 使用 pywinauto 检查复选框不起作用

    我从 pip 安装了最后一个 pywinauto 模块 我不知道如何使用 Check UnCheck GetCheckState 方法 这是我非常简单的代码示例 from pywinauto import application Start
  • 测试 numpy 数组中的每个元素是否位于两个值之间的简单方法?

    我想知道是否有一种语法上简单的方法来检查 numpy 数组中的每个元素是否位于两个数字之间 换句话说 就像numpy array 1 2 3 4 5 lt 5将返回array True True True True False 我想知道是否
  • antlr 文字字符串匹配:我做错了什么?

    我已经使用antlr 3天了 我可以解析表达式 编写侦听器 解释解析树 这是梦想成真 但后来我尝试匹配文字字符串 foo 但失败了 我可以找到很多声称可以做到这一点的例子 我都试过了 所以我创建了一个小项目来匹配文字字符串 我一定是在做一些
  • C#:如何将DLL嵌入到资源文件中(程序目录中没有DLL副本)

    我有一个需要 X dll 的 C 应用程序 项目 A 我已经将生成X dll的项目添加到A中作为Visual Studio中的参考 我还将 X dll 的发布版本作为二进制文件添加到 A 中的资源文件中 我已经告诉A项目了not将 X dl
  • 在 R 中合并列

    我想使用 R 将数据框的两列合并为一长列 下面有一个可重现的数据 data lt data frame x c 4 5 6 7 7 7 y c 3 4 5 6 7 7 data x y 1 4 3 2 5 4 3 6 5 4 7 6 5 7
  • Waypoint npm - 错误:无法解析“waypoint”

    我有一个 vue 项目并安装了 waypoints npm install waypoints 我尝试导入它 import waypoint from waypoints 但出现错误 错误 无法解析 Mypath 中的 路径点 我究竟做错了
  • 我需要服务器向所有客户端发送消息(Python、套接字)

    这是我的服务器程序 它如何将从每个客户端接收到的数据发送到每个其他客户端 import socket import os from threading import Thread import thread def listener cli
  • '#' 在 Mocha 中有特殊含义吗?

    describe indexOf it doSth 在 Mocha 中有特殊含义吗 什么是describe and it实际上呢 抱歉 没有找到相关文档describe and it describe and it遵循一种称为BDD 意思是
  • 使用 Zend 框架 2 未在 JSON 中呈现 404 HTTP 错误

    我正在使用 zend Framework2 创建一个简单的 Restful api 并且我参考了 Rob Allen 关于该主题的注释以及 http hounddog github com blog getting started with
  • 使用 C# 枚举 Excel 工作簿中单元格的有效方法

    枚举工作簿中每个工作表中的每个单元格的最有效方法是什么 对于包含约 130 000 个单元格的工作簿 下面的方法似乎相当有效 在我的机器上 打开文件大约需要 26 秒 枚举单元大约需要 5 秒 不过 我不是 Excel 专家 并且希望与更广
  • WebAPI 控制器中的 MVC 路由

    关于 MVC 和 WebAPI 中的路由的快速问题 我在路由config cs中添加了一条路由 routes MapRoute name ConfirmEmail url ConfirmEmail userid defaults new c
  • App Engine Cloud Trace 是否需要 AppState?

    谷歌的应用程序引擎已经升级了他们的开发者控制台 它包括一个名为云踪迹 https cloud google com tools cloud trace 这是改进版吗AppStats https cloud google com appeng
  • 使用 Django 在用户注册时填写用户个人资料

    我正在开发一个应用程序 使用 Django 提供的用户默认身份验证 以及django registration redux 同样在文档中 他们建议将用户配置文件链接到OneToOneField在不同的模型中 如下解释 https docs
  • Groovy 家长/孩子私人领域访问奇怪与关闭

    在 Groovy 中 我有一个父类和一个子类 其中父类的构造函数尝试使用闭包设置父类字段的值 如以下代码所示 try def x new ChildClass catch ex ex printStackTrace System err c