Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 抽象CharBuffer和包私有HeapCharBuffer:what';重点是什么?_Java_Nio - Fatal编程技术网

Java 抽象CharBuffer和包私有HeapCharBuffer:what';重点是什么?

Java 抽象CharBuffer和包私有HeapCharBuffer:what';重点是什么?,java,nio,Java,Nio,因此,java.nio.CharBuffer是一个抽象类,而HeapCharBuffer是包私有的。用户代码只能通过抽象超类CharBuffer的静态方法创建HeapCharBuffer的对象,如下所示: CharBuffer cb = CharBuffer.allocate(10); // cb class is now HeapCharBuffer 但是,为什么他们不让CharBuffer成为一个非抽象的公共类,它包含一组具有分配和包装方法逻辑的构造函数?这样一个概念有什么意义?我认为这样

因此,java.nio.CharBuffer是一个抽象类,而HeapCharBuffer是包私有的。用户代码只能通过抽象超类CharBuffer的静态方法创建HeapCharBuffer的对象,如下所示:

CharBuffer cb = CharBuffer.allocate(10);
// cb class is now HeapCharBuffer

但是,为什么他们不让CharBuffer成为一个非抽象的公共类,它包含一组具有分配和包装方法逻辑的构造函数?这样一个概念有什么意义?

我认为这样,作者有权更改CharBuffer.allocate返回的CharBuffer的具体实现。

但是用户代码只能使用超类中定义的方法,因此作者不能添加新方法,只能重写这些方法。因此,如果缓冲区本身是一个非抽象类,他就可以对其进行处理