У меня есть функция парсинга, которая анализирует закодированную длину от буфера байта, это возвращает проанализированную длину как интервал и берет индекс в буфер как целочисленный аргумент. Я хочу, чтобы функция обновила индекс согласно тому, что это анализируется, т.е. хотят передать тот индекс ссылкой. В C я просто передал бы int *
. Что самый чистый путь состоит в том, чтобы сделать это в Java? Я в настоящее время смотрю на передачу индексного аргумента как int[]
, но это немного ужасно.
Вы можете попробовать использовать org.apache.commons.lang.mutable.MutableInt
из библиотеки Apache Commons. В самом языке нет прямого способа сделать это.
Это невозможно в Java. Как вы предложили, один из способов - передавать int[]
. Другой способ - иметь небольшой класс, например, IntHolder
, который обернут int
.
Заверните байтовый буфер и индекс в объект ByteBuffer. ByteBuffer инкапсулирует концепцию буфера+позиция и позволяет читать и писать из индексированной позиции, которую он обновляет по мере выполнения.
Вы не можете передавать аргументы по ссылке в Java.
Что вы можете сделать, так это обернуть целочисленное значение в изменяемый объект. Хорошим вариантом является использование MutableInt
от Apache Commons. Другой, немного более запутанный способ - использовать int[]
, как вы предложили. Я бы не стал его использовать, поскольку неясно, зачем вы оборачиваете int
в одноклеточный массив.
Обратите внимание, что java.lang.Integer
является неизменяемым.