| Sottoclassi indirette conosciute | 
Un contenitore di dati di un tipo specifico.
 Le istanze di DataBuffer mappano segmenti di memoria nativi o heap su una vista lineare che supporta:
- Indicizzazione a 64 bit, che consente di lavorare con buffer più grandi di 2 31 byte
- Memorizzazione di oggetti di qualsiasi tipo e non solo primitivi
- I tipi generici consentono di lavorare direttamente anche con i tipi boxed, che non richiedono tipi di buffer espliciti come con i buffer JDK standard.
DataBuffer sia lineare, specialmente quando si ha a che fare con tipi non primitivi o buffer di grandi dimensioni. Metodi pubblici
| estratto <R> R | |
| buffer dati astratto <T> |  copyTo ( DataBuffer <T> dst, dimensione lunga)  Scrivi i riferimenti degli oggetti nell'array di origine in questo buffer. | 
| booleano astratto |  è uguale a (Oggetto oggetto)  Controlla l'uguaglianza tra i buffer di dati. | 
| astratto T |  getObject (indice lungo)  Legge il valore dell'indice specificato. | 
| booleano astratto |  èSolaLettura ()  Indica se questo buffer è supportato o meno da un array accessibile. | 
| buffer dati astratto <T> |  stretto (taglia lunga)  Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto di questo buffer, la cui dimensione è impostata sul valore specificato. | 
| buffer dati astratto <T> |  offset (indice lungo)  Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto di questo buffer, a partire dall'indice specificato. | 
| buffer dati astratto <T> |  leggere (T[]dst)  Leggere i riferimenti degli oggetti in questo buffer nell'array di destinazione. | 
| buffer dati astratto <T> |  leggi (T[] dst, int offset, int lunghezza)  Leggere i riferimenti degli oggetti in questo buffer nell'array di destinazione. | 
| buffer dati astratto <T> |  setObject (valore T, indice lungo)  Scrive il valore dato in questo buffer in corrispondenza dell'indice dato. | 
| astratto lungo |  misurare ()  Dimensione del buffer, in elementi. | 
| buffer dati astratto <T> |  slice (indice lungo, dimensione lunga)  Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto di questo buffer, a partire dall'indice e dalla dimensione specificati. | 
| astratto DataBufferWindow <? estende DataBuffer <T>> |  finestra (formato lungo)  Crea un  DataBufferWindowche fornisce una visualizzazione parziale di questo buffer. | 
| buffer dati astratto <T> |  scrivere (T[] src)  Scrivi i riferimenti degli oggetti nell'array di origine in questo buffer. | 
| buffer dati astratto <T> |  scrivere (T[] src, int offset, int lunghezza)  Metodo di immissione in blocco, utilizzando array int.  | 
Metodi pubblici
public abstract R accetta ( DataStorageVisitor <R> visitatore)
Visita l'archivio di backup di questo buffer.
 L'implementazione del buffer è responsabile di restituire al visitatore fornito un riferimento all'effettiva memorizzazione dei dati. Il visitatore non deve gestire tutti i possibili tipi di archiviazione dei dati e può sovrascrivere solo i metodi di archiviazione a cui è effettivamente interessato. Per qualsiasi altro tipo di archiviazione, questa chiamata eseguirà il fallback su fallback() in modo che il visitatore possa eseguire alcune routine generiche se necessario. 
Parametri
| visitatore | visita la memorizzazione dei dati di questo buffer | 
|---|
Ritorni
- lo stesso valore restituito dal visitatore
public abstract DataBuffer <T> copyTo ( DataBuffer <T> dst, dimensione lunga)
Scrivi i riferimenti degli oggetti nell'array di origine in questo buffer.
 Se sono presenti più valori da copiare rispetto alla dimensione del buffer di destinazione, ovvero size > dst.size() , non viene trasferito alcun valore e viene generata un'eccezione BufferOverflowException. D'altra parte, se ci sono più valori da copiare rispetto alla dimensione del buffer di origine, ad esempio > src.size() , viene lanciata un'eccezione BufferUnderfloatException.
 Altrimenti, questo metodo copia n = size da questo buffer nel buffer di destinazione. 
Parametri
| dst | il buffer di destinazione in cui vengono copiati i valori; non deve essere questo buffer | 
|---|---|
| misurare | numero di valori da copiare nel buffer di destinazione | 
Ritorni
- questo buffer
Lancia
| IllegalArgumentException | se il buffer di destinazione è questo buffer | 
|---|---|
| ReadOnlyBufferException | se il buffer di destinazione è di sola lettura | 
| BufferOverflowException | se non c'è abbastanza spazio nel buffer di destinazione | 
| BufferUnderflowException | se non ci sono abbastanza valori nel buffer di origine | 
Booleano astratto pubblico è uguale a (Oggetto obj)
Controlla l'uguaglianza tra i buffer di dati.
 Un buffer di dati è uguale a un altro oggetto se questo oggetto è un altro DataBuffer della stessa dimensione, tipo e gli elementi sono uguali e nello stesso ordine. Per esempio:
IntDataBuffer buffer = DataBuffers.of(1, 2, 3);
 assertEquals(buffer, DataBuffers.of(1, 2, 3));  // true
 assertEquals(buffer, DataBuffers.ofObjects(1, 2, 3));  // true, as Integers are equal to ints
 assertNotEquals(buffer, DataBuffers.of(1, 2, 3, 0));  // false, different sizes
 assertNotEquals(buffer, DataBuffers.of(1, 3, 2));  // false, different order
 assertNotEquals(buffer, DataBuffers.of(1L, 2L, 3L));  // false, different types
 Si noti che il calcolo richiesto per verificare l'uguaglianza tra due buffer può essere costoso in alcuni casi e pertanto si consiglia di non utilizzare questo metodo in un percorso critico in cui le prestazioni contano.
Parametri
| ogg | oggetto con cui confrontare questo buffer | 
|---|
Ritorni
- true se questo buffer è uguale all'oggetto fornito
public abstract T getObject (indice lungo)
 Legge il valore dell'indice specificato. Importante: l'utilizzo di questo metodo deve essere limitato ai buffer di tipi non primitivi o quando il tipo di dati non è conosciuto in modo deterministico dal chiamante. In ogni altro caso, preferisci l'utilizzo della sua variante primitiva che migliorerà significativamente le prestazioni (ad esempio IntDataBuffer.getInt(idx) 
Parametri
| indice | l'indice da cui verrà letto il float | 
|---|
Ritorni
- il valore dell'indice dato
Lancia
| IndexOutOfBoundsException | se l'indice è negativo o non inferiore alla dimensione del buffer | 
|---|
booleano astratto pubblico isReadOnly ()
Indica se questo buffer è supportato o meno da un array accessibile.
Ritorni
- true se e solo se questo buffer è di sola lettura
public abstract DataBuffer <T> stretto (dimensione lunga)
Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto di questo buffer, la cui dimensione è impostata sul valore specificato.
La nuova dimensione non deve essere maggiore della dimensione del buffer. Le modifiche al contenuto di questo buffer saranno visibili nel nuovo buffer e viceversa. Il nuovo buffer sarà di sola lettura se, e solo se, questo buffer è di sola lettura.
 Questa chiamata è equivalente a slice(0, size) 
Parametri
| misurare | dimensione di questo nuovo buffer | 
|---|
Ritorni
- il nuovo tampone
Lancia
| IllegalArgumentException | se i valori di indice e/o dimensione non superano i controlli di validazione | 
|---|
public abstract DataBuffer <T> offset (indice lungo)
Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto di questo buffer, a partire dall'indice specificato.
L'indice non deve essere maggiore della dimensione del buffer. Le modifiche al contenuto di questo buffer saranno visibili nel nuovo buffer e viceversa. Il nuovo buffer sarà di sola lettura se, e solo se, questo buffer è di sola lettura.
 Questa chiamata è equivalente a slice(index, size() - index) 
Parametri
| indice | indice del primo valore del nuovo buffer creato, non deve essere maggiore di size() | 
|---|
Ritorni
- il nuovo tampone
Lancia
| IllegalArgumentException | se l'indice non supera i controlli di convalida | 
|---|
public abstract DataBuffer <T> lettura (T[] dst)
Leggere i riferimenti degli oggetti in questo buffer nell'array di destinazione.
 Questo metodo trasferisce i valori da questo buffer nell'array di destinazione specificato. Se nel buffer sono presenti meno valori di quelli necessari per soddisfare la richiesta, ovvero se dst.length > size() , non viene trasferito alcun valore e viene generata un'eccezione BufferUnderflowException.
 Altrimenti, questo metodo copia i valori n = dst.length da questo buffer nell'array specificato. 
Parametri
| dst | l'array in cui devono essere scritti i valori | 
|---|
Ritorni
- questo buffer
Lancia
| BufferUnderflowException | se non ci sono abbastanza valori da copiare da questo buffer | 
|---|
public abstract DataBuffer <T> lettura (T[] dst, int offset, int length)
Leggere i riferimenti degli oggetti in questo buffer nell'array di destinazione.
 Questo metodo trasferisce i valori da questo buffer nell'array di destinazione specificato. Se nel buffer sono presenti meno valori di quelli richiesti per soddisfare la richiesta, ovvero se length > size() , non viene trasferito alcun valore e viene generata un'eccezione BufferUnderflowException.
 Altrimenti, questo metodo copia n = length da questo buffer nell'array specificato a partire dall'offset specificato. 
Parametri
| dst | l'array in cui devono essere scritti i valori | 
|---|---|
| offset | l'offset all'interno dell'array del primo valore da scrivere; deve essere non negativo e non maggiore di dst.length | 
| lunghezza | il numero massimo di valori da scrivere nell'array specificato; deve essere non negativo e non maggiore di dst.length - offset | 
Ritorni
- questo buffer
Lancia
| BufferUnderflowException | se in questo buffer rimangono meno valori di lunghezza | 
|---|---|
| IndexOutOfBoundsException | se le precondizioni sui parametri offset e lunghezza non valgono | 
public abstract DataBuffer <T> setObject (valore T, indice lungo)
 Scrive il valore dato in questo buffer in corrispondenza dell'indice dato. Importante: l'utilizzo di questo metodo deve essere limitato ai buffer di tipi non primitivi o quando il tipo di dati non è conosciuto in modo deterministico dal chiamante. In ogni altro caso, preferisci l'utilizzo della sua variante primitiva che migliorerà significativamente le prestazioni (ad esempio IntDataBuffer.setInt(idx) 
Parametri
| valore | il valore da scrivere | 
|---|---|
| indice | l'indice in cui verrà scritto il valore | 
Ritorni
- questo buffer
Lancia
| IndexOutOfBoundsException | se l'indice è negativo o non inferiore alla dimensione del buffer | 
|---|---|
| ReadOnlyBufferException | se questo buffer è di sola lettura | 
abstract pubblico di dimensione lunga ()
Dimensione del buffer, in elementi.
 Ad esempio, nel caso di un buffer di byte, questo valore è uguale al numero di byte che questo buffer può contenere. Per un buffer intero, è uguale al numero di numeri interi, quindi la dimensione in byte di questo buffer è size() * Integer.BYTES . 
Ritorni
- la dimensione del buffer
porzione astratta pubblica DataBuffer <T> (indice lungo, dimensione lunga)
Crea un nuovo buffer il cui contenuto è una sottosequenza condivisa del contenuto di questo buffer, a partire dall'indice e dalla dimensione specificati.
L'indice più la nuova dimensione non devono essere maggiori della dimensione del buffer. Le modifiche al contenuto di questo buffer saranno visibili nel nuovo buffer e viceversa. Il nuovo buffer sarà di sola lettura se, e solo se, questo buffer è di sola lettura.
Parametri
| indice | indice del primo valore del nuovo buffer creato | 
|---|---|
| misurare | la dimensione di questo nuovo buffer non deve essere maggiore di size() | 
Ritorni
- il nuovo tampone
Lancia
| IllegalArgumentException | se il valore della dimensione non supera i controlli di convalida | 
|---|
estratto pubblico DataBufferWindow <? estende la finestra DataBuffer <T>> (dimensione lunga)
 Crea un DataBufferWindow che fornisce una visualizzazione parziale di questo buffer.
 La finestra creata ha una dimensione fissa e può "slide" lungo questo buffer per fornire diverse visualizzazioni dei dati senza allocare una nuova istanza del buffer, come fa offset(long) . Ciò migliora le prestazioni generali quando questa operazione viene ripetuta frequentemente. Per esempio:
IntDataBuffer bufferA = DataBuffers.ofInts(1024);
 // ... init buffer data
 IntDataBuffer bufferB = DataBuffers.ofInts(1, 2, 3, 4);
 // Return the index of the first occurrence of bufferB in bufferA using a sliding window
 DataBufferWindow<IntDataBuffer> windowA = bufferA.window(4);
 for (int i = 0; i < bufferA.size() - bufferB.size(); ++i) {
     if (windowA.slideTo(i).buffer().equals(bufferB)) {
         return i;
     
 }
 }L'oggetto restituito è con stato e non è thread-safe.
Parametri
| misurare | dimensione della finestra | 
|---|
Ritorni
- una nuova finestra che inizia dall'indice 0 di questo buffer
Lancia
| Eccezione operazione non supportata | se questo tipo di buffer non supporta le finestre di buffer | 
|---|
public abstract DataBuffer <T> scrivi (T[] src)
Scrivi i riferimenti degli oggetti nell'array di origine in questo buffer.
 Questo metodo trasferisce i valori nell'array di origine specificato in questo buffer. Se sono presenti più valori nell'array di origine che in questo buffer, ovvero se src.length > size() , non viene trasferito alcun valore e viene generata un'eccezione BufferOverflowException.
 Altrimenti, questo metodo copia i valori n = src.length dall'array specificato. 
Parametri
| src | l'array di origine da cui leggere i valori | 
|---|
Ritorni
- questo buffer
Lancia
| BufferOverflowException | se lo spazio in questo buffer non è sufficiente per i valori nell'array di origine | 
|---|---|
| ReadOnlyBufferException | se questo buffer è di sola lettura | 
public abstract DataBuffer <T> scrittura (T[] src, int offset, int length)
Metodo di immissione in blocco, utilizzando array int.
 Questo metodo trasferisce i valori nell'array di origine specificato in questo buffer. Se sono presenti più valori nell'array di origine che in questo buffer, ovvero se length > size() , non viene trasferito alcun valore e viene generata un'eccezione BufferOverflowException.
 Altrimenti, questo metodo copia n = length dall'array specificato in questo buffer, a partire dall'offset specificato. 
Parametri
| src | l'array di origine da cui leggere i valori | 
|---|---|
| offset | l'offset all'interno dell'array del primo valore da leggere; deve essere non negativo e non maggiore di src.length | 
| lunghezza | il numero di valori da leggere dall'array specificato; deve essere non negativo e non maggiore di src.length - offset | 
Ritorni
- questo buffer
Lancia
| BufferOverflowException | se lo spazio in questo buffer non è sufficiente per i valori nell'array di origine | 
|---|---|
| IndexOutOfBoundsException | se le precondizioni sui parametri offset e lunghezza non valgono | 
| ReadOnlyBufferException | se questo buffer è di sola lettura |