Нет реального способа обернуть любые данные без копирования и получить реальный массив y в Java.Вы просто не можете создать новый массив поверх существующей памяти.У вас есть в основном 2 варианта:
- Используйте методы, которые могут принимать диапазон массива.Это уже было рекомендовано.
- Используйте оболочку, которая дает некоторую абстракцию, которая близка к массиву и подходит для многих приложений.Будет описано ниже.
Вы можете использовать java.nio.Buffer
иерархию классов, особенно java.nio.ByteBuffer
, которая предлагает абстракцию буфера для всего массива или поддиапазонов.Часто это то, что нужно людям.Это также предлагает много интересных способностей, таких как «нулевое копирование» и гибкое представление области байтов.
Вот пример переноса с использованием java.nio.ByteBuffer
.Это должно быть очень близко к тому, что вам нужно.По крайней мере для некоторых операций.
byte [] a1 = {0, 0, 1, 0};
ByteBuffer buf = ByteBuffer.wrap(a1,1,2);
Затем вы можете выполнить buf
любую ByteBuffer
операцию.
Просто предупреждение, buf.array()
возвращает исходный массив a1
(бэкэнд) со всеми элементами.