我已经有一个名为
的变量Image spriteImage;
稍后在代码中我说明它是什么
Image spriteImage = new Image("content/man.png");
此代码崩溃了我的Slick2D应用程序。 有什么区别
Image spriteImage = new Image("content/man.png");
和
spriteImage = new Image("content/man.png");
(实际上有效)
答案 0 :(得分:3)
如果“崩溃”意味着“将无法编译”,那么原因是,无论何时在范围内陈述Image spriteImage
(或任何其他类型/名称组合),您都要定义一个新的变量。如果你已经有了类似的声明,那么它将无法编译,说你已经重新声明了两次相同的变量。
声明:
Image spriteImage = new Image("content/man.png");
声明一个名为spriteImage
的 new 变量,而声明:
spriteImage = new Image("content/man.png");
将spriteImage
(已存在的变量)的值设置为new Image(...)
。
答案 1 :(得分:0)
看起来你可能会影响一个变量。
如果在方法之外
Image spriteImage
然后在你做的方法里面
Image spriteImage = (...);
您正在分配本地变量spriteImage
如果你这样做
spriteImage = (...);
然后您将分配先前声明的spriteImage
(可能是实例变量)
当您只分配本地实例时,将实例保留为null
,我猜你试图使用它,并且有一个空指针会导致openGL崩溃。
答案 2 :(得分:0)
您已经宣布 Image spriteImage ,但尚未对其进行初始化。
spriteImage = new Image("content/man.png");
以上是初始化它,但是
Image spriteImage = new Image("content/man.png");
声明一个本地Image变量,它正在遮蔽另一个变量。
答案 3 :(得分:0)
重新声明变量。 spriteImage已经是一个Image,所以你不能将它声明为一个Image。另一种解决方案是使用:
Image spriteImage = new Image("content/man.png");
并且不在本声明中声明。
Image spriteImage;
这也是可以接受的,你不会两次声明spriteImage。