Java ShortBuffer asReadOnlyBuffer()方法及示例
java.nio.ShortBuffer 类的 asReadOnlyBuffer() 方法是用来创建一个新的、只读的短缓冲区,其内容是这个缓冲区的。新的缓冲区是这个缓冲区的复制品。因此,对这个缓冲区的内容所做的改变将在新的缓冲区中可见。
由于新缓冲区是只读的,因此不允许对其内容进行任何修改。两个缓冲区的位置、极限和标记值将是独立的。新缓冲区的容量、极限、位置和标记值将与这个缓冲区的相同。如果这个缓冲区本身是只读的,那么这个方法的行为与复制方法完全相同。
语法:
public abstract ShortBuffer asReadOnlyBuffer()
返回值 :该方法返回新的、 只读的短缓冲区 ,其内容与该缓冲区的内容相同。
下面是说明 asReadOnlyBuffer() 方法的例子。
程序1 :
// Java program to demonstrate// asReadOnlyBuffer() method import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) { // Declaring the capacity of the ShortBuffer int capacity = 10; // Creating the ShortBuffer try { // creating object of shortbuffer // and allocating size capacity ShortBuffer sb = ShortBuffer.allocate(capacity); // putting the value in shortbuffer sb.put((short)856); sb.put(2, (short)961); sb.rewind(); // print the ShortBuffer System.out.println("Original ShortBuffer: " + Arrays.toString(sb.array())); // Creating a read-only copy of ShortBuffer // using asReadOnlyBuffer() method ShortBuffer shortBuffer = sb.asReadOnlyBuffer(); // print the ShortBuffer System.out.print("\nReadOnlyBuffer ShortBuffer: "); while (shortBuffer.hasRemaining()) System.out.print(shortBuffer.get() + ", "); } catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException catched"); } catch (ReadOnlyBufferException e) { System.out.println("ReadOnlyBufferException catched"); } }}
输出:
Original ShortBuffer: [856, 0, 961, 0, 0, 0, 0, 0, 0, 0]ReadOnlyBuffer ShortBuffer: 856, 0, 961, 0, 0, 0, 0, 0, 0, 0,
程序2 :
// Java program to demonstrate// asReadOnlyBuffer() method import java.nio.*;import java.util.*; public class GFG { public static void main(String[] args) throws Exception { // Declaring the capacity of the sb int capacity1 = 10; // Declaring the capacity of the sb1 int capacity2 = 5; // Creating the ShortBuffer try { // // sb // // creating object of shortbuffer sb // and allocating size capacity ShortBuffer sb = ShortBuffer.allocate(capacity1); // putting the value in sb sb.put((short)856); sb.put(2, (short)961); sb.rewind(); // print the ShortBuffer System.out.println("ShortBuffer sb: " + Arrays.toString(sb.array())); // // sb1 // // creating object of shortbuffer sb1 // and allocating size capacity ShortBuffer sb1 = ShortBuffer.allocate(capacity2); // putting the value in sb1 sb1.put(1, (short)456); sb1.put(2, (short)645); sb1.rewind(); // print the ShortBuffer System.out.println("\nShortBuffer sb1: " + Arrays.toString(sb1.array())); // Creating a read-only copy of ShortBuffer // using asReadOnlyBuffer() method ShortBuffer readOnlySb = sb.asReadOnlyBuffer(); // print the ShortBuffer System.out.print("\nReadOnlyBuffer FloatBuffer: "); while (readOnlySb.hasRemaining()) System.out.print(readOnlySb.get() + ", "); // try to change readOnlySb System.out.println("\n\nTrying to get the array" + " from ReadOnlyFb for editing"); short[] sbarr = readOnlySb.array(); } catch (IllegalArgumentException e) { System.out.println("IllegalArgumentException catched"); } catch (ReadOnlyBufferException e) { System.out.println("Exception thrown: " + e); } }}输出:
ShortBuffer sb: [856, 0, 961, 0, 0, 0, 0, 0, 0, 0]ShortBuffer sb1: [0, 456, 645, 0, 0]ReadOnlyBuffer FloatBuffer: 856, 0, 961, 0, 0, 0, 0, 0, 0, 0, Trying to get the array from ReadOnlyFb for editingException thrown: java.nio.ReadOnlyBufferException
