2

メソッド呼び出しの結果としてオブジェクトを取得しています。これは、行と列を持つラスター/グリッド/マトリックスです。ただし、メソッドの戻り型はオブジェクトです。

デバッグ時に、内部に2D配列が表示されます。しかし、私はそれを何にもキャストすることができません。

Object vPixels = pixelblock3.getPixelDataByRef(0);
Integer[][] wPixels = (Integer[][]) vPixels;

2行目でClassCastExceptionが発生します。 [[B cannot be cast to [[Ljava.lang.Integer;

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

3

推測:試してください:

int[][] wPixels = (int[][]) vPixels; 

または

byte[][] wPixels = (byte[][]) vPixels; 

[[B、「B」はプリミティブバイトを意味すると思います。

于 2012-12-30T21:08:56.203 に答える
0

オブジェクトのタイプを知るための簡単なトリック:

Object vPixels = pixelblock3.getPixelDataByRef(0);
Class cls = vPixels.getClass();
System.out.println("The type of the object is: " + cls.getName());

次に、適切な型にキャストできます。

編集:ルイージが指摘したように[[Bはバイト[][]を意味するので、彼の答えは正しいものです。

于 2012-12-30T21:11:37.300 に答える