2

我在 YouTube 上观看了关于 2D 游戏引擎设计的教程,并且有这样一行:

private int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();

我知道像素应该包含图像颜色的整数列表,但我不明白像素的数据是如何进入图像的,因为在教程中这是唯一使用像素的行。

那么 (DataBufferInt) 是否意味着我将像素连接到图像中 DataBufferInt 类型的数据?

4

1 回答 1

4

它被称为铸造。该对象(具有不同的运行时类型)将被视为新的给定类型。

说,那image.getRaster().getDataBuffer()返回一个 type DataBuffer。但实际上(运行时类型)它是DataBufferInt.

您的DataBuffer类型没有getData()会返回的方法int[]。所以,你需要告诉编译器它是一个DataBufferInt,所以你可以得到数据为int[]

如果运行时数据类型不同,并且您尝试强制转换,您将获得一个ClassCastException.

于 2013-04-14T12:25:41.197 回答