调用超级构造函数时出现GroovyCastException

时间:2014-03-23 23:42:31

标签: class inheritance groovy

我有一个抽象的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肯定不是null。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

int counter = null

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