首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

这些抽象方法是如何起作用的

2011-12-05 
这些抽象方法是怎么起作用的?ByteBufferbbByteBuffer.allocate(BSIZE)bb.asCharBuffer().put( Howdy!

这些抽象方法是怎么起作用的?
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 的源代码了。

热点排行