Być może mam zamiar o tym w niewłaściwy sposób, ale brakuje niektórych absolutnie put metod na ByteBuffer
.Brakuje niektórych metod bezwzględnych na ByteBuffer
Jeśli spojrzysz na ByteBuffer
zobaczysz, że większość metod put ma zarówno wariant bezwzględny, jak i względny.
wyjątkiem:
- Zapis częściami
byte
tablicy wByteBuffer
. - Zapisywanie
ByteBuffer
doByteBuffer
.
.. i potrzebuję dokładnie tych.
Żeby było jasne ByteBuffer
ma metody:
put(byte[] src, int offset, int length)
put(ByteBuffer src)
ale brakuje:
put(int index, byte[] src, int offset, int length)
put(int index, ByteBuffer src)
mam powody, dlaczego nie chce się przenieść pozycję wskaźnika bufora, stąd chcę używać tylko bezwzględne metody put.
Każdy pomysł, dlaczego te metody zostały pominięte?
Mogę oczywiście naśladować brakujące metody bez przesuwania wskaźnika pozycji bufora, ale będzie to dotyczyło pętli nad bajtami źródłowymi. Javadoc wyraźnie stwierdza, że te metody są (potencjalnie) znacznie bardziej wydajne niż przenoszenie niż zapętlanie i przenoszenie bajtów jeden po drugim. Wierzę w Javadoc, ponieważ moje testy wskazują na to samo. Muszę wycisnąć jak najwięcej prędkości z mojej implementacji, więc jestem oczywiście skłonny skorzystać z każdej dużej metody, którą mogę dostać w swoje ręce ... gdyby tylko istniały.
Incedentially ByteBuffer
Brakuje również metody absolutnej get
dla przesunięcia tablicy bajtów częściowych. Ale tak naprawdę nie potrzebuję obecnie takiej metody. Ale znowu dziwne, że nie istnieje.
Tylko kontynuacja. Znalazłem ten http://thesoftwarelife.blogspot.dk/2009/10/java-bytebuffer-annoyances.html, który wydaje się narzekać na mniej więcej to samo. – peterh
Twierdzę, że metody absolutne są bardziej użyteczne i ważne niż te relatywne. Gdybym przeprojektował ten interfejs API, pominąłbym całą pozycję, odwrócił, przewinął, oznaczył, zresetował i tak dalej, i skupił się na zapewnieniu dostępu do pamięci, pozostawiając ją w zasadzie ciężką tablicą z C "union" cechy. – Boann
@Boann - ja też powinienem. Dokładnie tak, jak o tym myślę. – peterh