2

私はこの署名を持つ関数を持っています:

void insert(T[] thearray);

そして、私はこのようなバイト配列を持っています:

byte[] value = new byte[4096];

しかし、私がこのように関数を呼び出すと:

cb.insert(value);

エラーが発生します:

The method insert(Byte) in the type CircularBuffer<Byte> is not applicable for the arguments (byte[])

CircularBufferは、insertメソッドを持つクラスです。

次のようにCircularBufferをインスタンス化します。

CircularBuffer<Byte> cb = new CircularBuffer<Byte>(4096);

この挿入関数に値を渡すにはどうすればよいですか?

明確にするために、CircularBufferクラスは次のように宣言されています。

public class CircularBuffer<T>

public CircularBuffer(int size) //ctor

必要に応じて詳細:

https://codereview.stackexchange.com/questions/22826/circular-buffer-implementation-for-buffering-tcp-socket-messages

結局、私は効率上の理由から、特殊なByteCircularBufferを作成することにしました。-バイトを使用します。プリミティブ型からオブジェクト型へのこの領域、たとえばバイト->バイトは混乱を招きます。

4

2 に答える 2

6

Abyte[]は ではありませんByte[]。最初に一方を他方に明示的に変換する必要があります。

これを行う方法については、ラッパーの ArrayList を対応するプリミティブの配列にキャストするなどを参照してください。

于 2013-02-17T17:31:54.287 に答える
2

Byteとはかなり異なりbyteます。バイト配列をバイト配列に変換するか (これには多くの時間とメモリが必要です)、新しいクラスを記述しますByteCircularBuffer(取得しCircularBuffer<T>て に置き換えます)。Tbyte

于 2013-02-17T17:35:21.350 に答える