1

の JavaDoc は次のようにjava.awt.WritableRaster述べています。

このクラスのコンストラクターは保護されています。をインスタンス化するには、クラスのファクトリ メソッドWritableRasterの 1 つを使用します。createWritableRasterRaster

type のカスタムDataBufferサブクラス (NIOでサポートされている) を使用しているため、ファクトリ メソッド [1] を使用できません。ファクトリ メソッドのようにクラスを直接使用することもできますが、sun.* クラスに依存するのは好きではありません。代わりに、次のようなサブクラスを作成しました。ByteBufferDataBuffer.TYPE_INTsun.awt.image.SunWritableRasterWritableRaster

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)前提としています。DataBufferDataBuffer.TYPE_INTjava.awt.DataBufferIntIntegerInterleavedRaster

4

0 に答える 0