1

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稍后在构造函数中出现异常。

4

0 回答 0