是否可以创建WritableRaster的子类而不是使用Raster.createWritableRaster?

时间:2013-08-29 14:43:13

标签: java bufferedimage java-2d raster

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}}构造函数。

0 个答案:

没有答案