2016-03-01 1 views
1

Единичные тесты: настройка массива байтов с помощью ядовитых барьеров. Если в рамках теста любого жилец касания тест блока ослабеет, например, в следующем фрагменте:Java: Ссылка на вспомогательный массив байтов

byte[] memory = new byte[Size + 2]; 

/* Poison barriers. Failure in case of touch! */ 
memory[0]  = 0x5A; 
memory[Size-1] = 0xA5; 

... 
    array = sub-array of memory[] from '1 to Size-2' 
    test functions on array 
... 
/* Check if boarders have been touched. */ 
hwut_verify(memory[0]  == 0x5A); 
hwut_verify(memory[Size-1] == 0xA5); 

Как я мог получить суб-массив, который на самом деле находится внутри исходного массива байт?

+1

Вы можете скопировать его с помощью 'System.arraycopy', но вы не можете получить ссылку (или указатель, если вам нравится), чтобы подмассив. Для этого вы можете использовать 'ByteBuffer' вместо' byte [] ' – stjepano

ответ

2

В Java байт [] имеет заголовок, который включает в себя максимальную длину. Это означает, что вы не можете получить дополнительный байт [], поскольку он не будет объектом.

Что вы можете сделать, это использовать ByteBuffer

ByteBuffer bb = ByteBuffer.wrap(byteArray); 
ByteBuffer portion = bb.position(10).limit(20).slice(); 
+0

Выполняется ли какое-либо действие над« частью »эффекта« byteArray »? –

+0

@ Frank-ReneSchäfer вы можете изменить положение и предел 'part' независимо, но если вы пишете байты в одну в этой области, они видны для обоих. то есть они фактически работают над массивом say. Примечание: ByteBuffer поддерживает также кучную память. –