JavaDocjava.awt.WritableRaster
说:
此类的构造函数受到保护。要实例化 a
WritableRaster
,请使用类createWritableRaster
中的一种工厂方法Raster
。
我正在使用自定义类型的DataBuffer
子类(NIOByteBuffer
支持)DataBuffer.TYPE_INT
,所以我不能使用工厂方法 [1]。我可以像工厂方法一样直接使用该类sun.awt.image.SunWritableRaster
,但我不喜欢依赖 sun.* 类。所以相反,我创建了一个WritableRaster
像这样的子类:
class GenericWritableRaster extends WritableRaster {
public GenericWritableRaster(final SampleModel model, final DataBuffer buffer, final Point origin) {
super(model, buffer, origin);
}
}
(它也有一个toString()
方法,但就是这样)。
到目前为止,它似乎可以很好地满足我的需求,但是这样做可能对兼容性或性能产生什么影响?
[1] 由于可能存在 JDK 错误,该createWritableRaster(SampleModel, DataBuffer, Point)
方法假定任何DataBuffer
带有类型DataBuffer.TYPE_INT
的内容实际上都会java.awt.DataBufferInt
导致IntegerInterleavedRaster
稍后在构造函数中出现异常。