java.awt.WritableRaster
的JavaDoc说:
此类的构造函数受到保护。要实例化
WritableRaster
,请使用createWritableRaster
类中的Raster
工厂方法之一。
我正在使用类型为DataBuffer
的自定义ByteBuffer
子类(NIO 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
的{{1}}实际上是DataBuffer.TYPE_INT
,导致java.awt.DataBufferInt
发生异常1}}构造函数。