[英]Difference between declaring type of variable
我已经有一个名为
Image spriteImage;
稍后在代码中,我声明它是什么
Image spriteImage = new Image("content/man.png");
此代码使我的Slick2D应用程序崩溃。 之间有什么区别
Image spriteImage = new Image("content/man.png");
和
spriteImage = new Image("content/man.png");
(实际上有效)
如果用“崩溃”表示“不会编译”,则原因是,每当在作用Image spriteImage
声明Image spriteImage
(或任何其他类型/名称组合)时,您都在定义一个新变量。 如果您已经有一个类似的语句,那么它将无法编译,说明您已两次重复声明相同的变量。
该声明:
Image spriteImage = new Image("content/man.png");
声明一个名为spriteImage
的新变量,而声明:
spriteImage = new Image("content/man.png");
正在将spriteImage
的值(一个已经存在的变量)设置为new Image(...)
。
看来您可能正在阴影变量。
如果在方法之外
Image spriteImage
然后在方法里面
Image spriteImage = (...);
您正在分配局部变量spriteImage
如果你这样做
spriteImage = (...);
然后,您将分配先前声明的spriteImage
(可能是一个实例变量)
当您只分配本地实例时,将实例一保留为null
,而我猜测您尝试使用它,并且有一个null指针导致openGL崩溃。
您已经声明了Image spriteImage,但尚未初始化它。
spriteImage = new Image("content/man.png");
上面是初始化它,但是
Image spriteImage = new Image("content/man.png");
在声明局部Image变量,该变量遮盖了另一个变量。
您重新声明变量。 spriteImage已经是一个Image,因此您不能将其声明为Image。 另一个解决方案是只使用:
Image spriteImage = new Image("content/man.png");
并且不在此声明中在上面声明。
Image spriteImage;
这也是可以接受的,您不必两次声明spriteImage。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.