Cómo presentar java.nio.soapbytebuffer
En NIO de Java, generalmente usamos el búfer ByteBuffer para transmitir datos. Generalmente, creamos objetos Buffer a través de dos métodos estáticos de ByteBuffer:
ByteBuffer. allocate(int capacidad);
ByteBuffer.wrap(byte[] array);
Consulte estas dos partes en el código fuente NIO del JDK:
/ **código fuente de la función allocate()**/
ByteBuffer estático público asignar(int capacidad) {
if (capacidad lt; 0)
p>lanzar nueva IllegalArgumentException();
devolver nuevo HeapByteBuffer(capacidad, capacidad);
}
/**wrap() función Código fuente**/
envoltura de ByteBuffer estática pública (matriz de bytes []) {
envoltura de retorno (matriz, 0, matriz.longitud);
}
//
envoltura de ByteBuffer estático público (matriz de bytes [],
desplazamiento int, longitud int)
{
prueba {
devolver nuevo HeapByteBuffer(matriz, desplazamiento, longitud);
} catch (IllegalArgumentException x) {
lanzar nuevo IndexOutOfBoundsException();
}
}
Podemos ver claramente que ambos métodos crean una instancia de HeapByteBuffer para crear objetos ByteBuffer, es decir, buffers de montón. Además de los buffers de montón, existe otro tipo de buffer. También podemos crear este tipo de búfer a través de ByteBuffer. método allocateDirect (capacidad int), consulte el código fuente de JDK, de la siguiente manera:
ByteBuffer estático público allocateDirect(capacidad int) {
return new DirectByteBuffer(capacidad); p >
}
Descubrimos que esta función llama a la clase DirectByteBuffer (capacidad), que es la clase que crea un búfer directo.