【问题标题】:GroovyCastException when calling super constructor调用超级构造函数时出现 GroovyCastException
【发布时间】:2014-03-23 23:42:30
【问题描述】:

我有一个抽象的 Groovy 类 GameScreen,它在构造函数中接收一些参数:

GameScreen(game, background, screenSize)
{ ... }

然后我从基类派生一个子类LoadingScreen。在子类的构造函数中,我这样调用超级构造函数:

LoadingScreen(game)
{
    super(game, new Color(0.0f, 0.0f, 0.2f, 1.0f), Constants.SCREEN_SIZE)
}

game 是一个非空对象,new Color() 我猜是明确的,Constants.SCREEN_SIZE 是另一个非空对象。

但是,当我现在运行 Groovy 应用程序时,我在 LoadingScreen 中的超级构造函数调用中遇到以下错误:

Exception in thread "LWJGL Application" org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'null' with class 'null' to class 'int'. Try 'java.lang.Integer' instead

问题是:我不知道这个错误是什么意思。这个错误消息指的是什么int?哪个对象是空的?我检查了调试器,game 肯定不为空。

由于我没有更多的想法,我从基类GameScreen 中的构造函数中删除了所有参数,然后从子构造函数中调用它的构造函数,然后简单地作为super()。但是,我仍然得到完全相同的错误,所以我怀疑是这些参数触发了它。

有什么想法吗?

【问题讨论】:

  • 你能发布足够多的代码来重现这个问题吗?我尝试对您的代码进行一些假设,并且可以毫无问题地实例化超类
  • 好的,感谢您向我询问更多代码——我正在准备一个最小的示例并发现了问题。我已经更新了我原来的帖子...
  • 您可以发布您的更新作为答案。

标签: class inheritance groovy


【解决方案1】:

稍微重构一下我的代码后,我发现在我的基类GameScreen中有一个类变量实例化如下:

int counter = null

null 更改为-1 后,它现在可以工作了。当然,这是有道理的。但是,这个错误消息确实具有误导性,因为它不是指该行,而是指构造函数本身:(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-29
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多