Java抽象类和类型
我在:Java抽象类和类型,java,abstract-class,bytebuffer,Java,Abstract Class,Bytebuffer,我在: ByteBuffer out=ByteBuffer.wrap(数据) 如果ByteBuffer是一个抽象类,并且抽象类不能被初始化,那么如何声明对象out ByteBuffer.wrap()返回一个ByteBuffer,但是作为ByteBuffer一个抽象类,wrap方法返回的ByteBuffer的实现类是什么 因为wrap()方法返回一个特定的ByteBuffer实现,在本例中是HeapByteBuffer 请参见jdk1.6.0_43_src.zip中的wrap实现 public s
ByteBuffer out=ByteBuffer.wrap(数据)代码>
如果ByteBuffer
是一个抽象类,并且抽象类不能被初始化,那么如何声明对象out
ByteBuffer.wrap()
返回一个ByteBuffer
,但是作为ByteBuffer
一个抽象类,wrap方法返回的ByteBuffer
的实现类是什么 因为wrap()
方法返回一个特定的ByteBuffer
实现,在本例中是HeapByteBuffer
请参见jdk1.6.0_43_src.zip中的wrap
实现
public static ByteBuffer wrap(byte[] array, int offset, int length)
{
try {
return new HeapByteBuffer(array, offset, length);
} catch (IllegalArgumentException x) {
throw new IndexOutOfBoundsException();
}
}
这不是构造函数调用,而是静态方法的调用。
抽象类可以有非抽象方法
构造函数调用如下所示:
ByteBuffer out = new ByteBuffer(data);
抽象类不能被实例化,但是它们的子类(如果不是抽象的话)可以被实例化
在这个特定的示例中,根据ByteBuffer source,调用ByteBuffer.wrap()(请注意,调用的是静态方法,而不是构造函数)会得到一个HeapByteBuffer实例,它是ByteBuffer的子类
我假设您正在尝试理解的概念:您想要一个ByteBuffer,您就可以得到一个。您真的不需要关心特定的实现您得到的任何实现都将提供ByteBuffer合同中声明的功能。,因为您没有实例化ByteBuffer。您调用了一个静态方法,该方法返回ByteBuffer的某个子类的实例。