LINUX.ORG.RU

java + MappedByteBuffer


0

0

Хмм что-то я туплю.. Хочется иметь следующий класс (псевдо-scala):

class Page {
    protected var data = new Array[Byte](PAGESIZE)
    def getData() = data
    def
    def add(val: T) { 
        write_to_the_end_of_data(val)
    }
    def iterate()
        тут возвращаем итератор по парах (class,val)
        записанных в data при помощи val
    }
 
То есть я просто хочу иметь буффер байтов с которым хочу оперировать 
как с File (добавлять Int'ы, Float'ы итд при помощи add и читать их 
оттуда. Например если Int занимает 4 байта то мне нужны будут n-тые 4 
байта из data для восстановления Int'а. Как я понял мне нужен 
MappedByteBuffer. Но как я понимаю отсюда:

http://www.java2s.com/Tutorial/Java/0180__File/0408__MappedByteBuffer.htm

его создаешь на файле, а я хочу просто Array[Byte] в памяти с 
возможностью делать на нем write(Int), write(Short). Короче нужна 
простая и легкая конверсия из:

{ Int, Short, Float, Double } в Array[Byte] и обратно. Мне почему-то 
усиленно кажется что это делается как-то проще...

Можно бы еще так:

trait DbType
{ def toBytes(): Array[Byte] }

class DbInt extends Short with DbType {
{ override def toBytes(): Array[Byte] = { ... } }

...

class DbFloat extends Float with DbType {
{ override def toBytes(): Array[Byte] = { ... } }

class DbDouble extends Double with DbType
{ override def toBytes(): Array[Byte] = { ... } }

...

class DbString extends String with DbType
{ override def toBytes(): Array[Byte] = { ... } }

Так бы даже было лучше. Как это в Яве сделать легче всего?

dissident ★★
() автор топика

Может не правильно понял, но есть ByteBuffer.

mrco ★★
()

Data[Input,Output]Stream поверх Byte[Input,Output]Stream ?

phoenix ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.