这些抽象方法是怎么起作用的?
ByteBuffer bb = ByteBuffer.allocate(BSIZE);
bb.asCharBuffer().put( "Howdy! ");
char c;
while((c = bb.getChar()) != 0)
System.out.print(c + " ");
bb.rewind();
// Store and read a short:
bb.asShortBuffer().put((short)471142);
System.out.println(bb.getShort());
bb.rewind();
// Store and read an int:
bb.asIntBuffer().put(99471142);
System.out.println(bb.getShort());
bb.rewind();
为什么bb.getChar()一次只能获得一个英文字母
而bb.getShort(),bb.getShort()一次就能获得放入的数字
而API中他们的定义都是:
读取此缓冲区的当前位置之后的两个字节,根据当前的字节顺序将它们组成 short(或char或int) 值,然后将该位置增加 2
怎么结果不是类似的
还有,ByteBuffer是抽象类,它的get,put方法都是抽象的,怎么可以返回值?
------解决方案--------------------应该是内部的实现机制的问题,getchar应该是指读入一个字节,而getshort应该是读入一个字符串
------解决方案--------------------因为 ByteBuffer 是一个抽象类,也就是说不能生成对象的。它的对象是由其 allocate() 的静态方法生成的。那就可以到 JDK 的源代码中找到这个类和这个方法,就可以知道它 return 的类型了。
另:JDK 的源代码在你 JDK 安装好的的目录下有个 src.zip 的文件,解开来就是 JDK 的源代码了。