我在你的管中观看了2D游戏引擎设计的教程,并且有这一行:
private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
我知道像素应该包含图像的整数颜色列表,但是我不明白像素的数据是如何进入图像的,因为在教程中这是唯一使用像素的行。 / p>
那么(DataBufferInt)是指我将像素连接到图像中DataBufferInt类型的数据吗?
答案 0 :(得分:2)
它被称为投射。对象(具有不同的运行时类型)将被视为新的给定类型。
说,image.getRaster().getDataBuffer()
返回类型DataBuffer
。但实际上(运行时类型)它是DataBufferInt
。
您的DataBuffer
类型没有getData()
方法,会返回int[]
。因此,您需要告诉编译器它是DataBufferInt
,因此您可以将数据作为int[]
。
如果运行时数据类型不同,并且您尝试强制转换,则会得到ClassCastException
。