2017-05-29 1 views
1

私は以下のように定義ArrayListのを持っています私はを操作してビット単位の操作でを書き、それをリストに書き戻そうとコンパイラは一貫してエラーを出します。エラーのJava

私が試してみました:

allocatedBytes.get(currentByteAddress) = toWrite; 

allocatedBytes.get(currentByteAddress) = (Byte)toWrite; 

allocatedBytes.get(currentByteAddress) = Byte(toWrite); 

allocatedBytes.get(currentByteAddress) = new Byte(toWrite); 

allocatedBytes.get(currentByteAddress) = Byte((byte)toWrite); 

エラーは常に "予想される変数" です。私はこれを理解していない。

私の主な目標は、ビットレベルでこのバイトを操作することです。簡単な方法があれば、私はすべての耳です。

答えて

1

これは、バイト、ボクシング、またはビット単位の操作とは関係ありません。ちょうどそれがArrayListの要素を設定することはできません。必要とする

allocatedBytes.set(currentByteAddress, toWrite); 
+0

がエラーは常に何か他のものであるかおかしいです。私はあまりにもオブジェクトのArrayListsを使用するために私は離れてすべての_get()_を使用して得ることができると思います。ありがとうございました。 – CantSayIHave

+0

...いいえ、あなたはオブジェクトのためにこれで逃げることはできません。これは普遍的です。 –

1

.get()操作を使用して配列に値を割り当てることはできません。 .get()は値を返しますので、Variable expectedというエラーが発生しています。

あなたは値を設定するset(index, value)方法、例えば使用することができます:

allocatedBytes.set(currentByteAddress, toWrite); 
+0

ありがとう、私はリテラルでArrayListを作る必要がなかったので、それを説明します。 – CantSayIHave

+0

同じ原理が 'Object'の' ArrayList'にも適用されます。 'array.get(index).doSomething();'のように、返されたオブジェクトのメソッドを呼び出すことはできますが、 'array.get(index)= new Object();'を実行することはできません。配列を変更するには、 'set()'メソッドを使用する必要があります。また、あなたが有益だと思っている回答を投票するのもいいでしょう。 –