我有一个抽象的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()
。但是,我仍然得到完全相同的错误,所以我怀疑其他的东西,然后这些参数触发它。
有什么想法吗?
答案 0 :(得分:0)
重构我的代码后,我发现在我的基类GameScreen
中有一个类变量实例化如下:
int counter = null
将null
更改为-1
后,现在可以使用了。当然这是有道理的。但是,此错误消息确实具有误导性,因为它不是指那一行,而是指构造函数本身:(