当我有以下代码行来创建ByteBuffer的实例时 我得到一个错误说"无法实例化类型ByteBuffer" ByteBuffer get = new ByteBuffer();
程序 static int g = 0;
$('.btn-send').on('click', function(e){
e.preventDefault();
$('.waiting').fadeIn('fast');
});
答案 0 :(得分:2)
因为它是一个抽象类,ByteBuffer无法直接实例化,但您可以使用allocate
或allocateDirect
工厂方法:
要选择是否需要直接缓冲区,请阅读类级Javadoc:
字节缓冲区是直接缓冲区或非直接缓冲区。给定直接字节缓冲区,Java虚拟机将尽最大努力直接执行本机I / O操作。也就是说,它将尝试避免在每次调用底层操作系统的本机I / O操作之前(或之后)将缓冲区的内容复制到(或从中间缓冲区)。
可以通过调用此类的
allocateDirect
工厂方法来创建直接字节缓冲区。与非直接缓冲区相比,此方法返回的缓冲区通常具有更高的分配和解除分配成本。直接缓冲区的内容可能位于正常的垃圾收集堆之外,因此它们对应用程序的内存占用量的影响可能并不明显。因此,建议直接缓冲区主要分配给受基础系统本机I / O操作影响的大型长期缓冲区。通常,最好只在它们在程序性能中产生可测量的增益时才分配直接缓冲区。
对于与文件的内存映射区域对应的ByteBuffer实例,您也可以考虑MappedByteBuffer。
答案 1 :(得分:1)
ByteBuffer是一个抽象类。抽象类无法实例化。
http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html