Avatar billede dcgeek Nybegynder
27. april 2005 - 20:36 Der er 8 kommentarer

Hvordan sætter jeg en klasse ind?

Jeg er ved at lave en MIDlet, og vil bruge RMS.
Til det har jeg fundet følgende klasse hvorfra jeg kan bruge RMS:

import java.io.*;
import javax.microedition.rms.*;

public class Record implements DataInput {

    private RecordStore _rs;
    private byte[] _data;
    private int _length;
    private int _id;
    private DataInputStream _din;

    public Record( RecordStore rs ){
        this( rs, 100 );
    }

    public Record(
              RecordStore rs, int initialRecordSize ){
        _rs    = rs;
        _data  = new byte[ initialRecordSize ];
        _din    = new DataInputStream(
                  new ByteArrayInputStream( _data ) );
        _length = -1;
    }

    public byte[] getByteArray() { return _data; }

    public int getLength() { return _length; }

    public byte[] moveTo( int id )
                throws RecordStoreNotOpenException,
                              InvalidRecordIDException,
                                  RecordStoreException,
                                          IOException
    {
        _length = _rs.getRecordSize( id );

        if( _length > _data.length ){
            _data = new byte[ _length + 40 ];
            _din  = new DataInputStream(
                  new ByteArrayInputStream( _data ) );
        }

        _rs.getRecord( id, _data, 0 );
        _id = id;
        _din.reset();

        return _data;
    }

    public void readFully(byte b[])
                                  throws IOException {
        _din.readFully( b );
    }

    public void readFully(byte b[], int off, int len)
                                  throws IOException {
        _din.readFully( b, off, len );
    }
      return _din.skipBytes( n );
    }

    public boolean readBoolean() throws IOException {
        return _din.readBoolean();
    }

    public byte readByte() throws IOException {
        return _din.readByte();
    }

    public int readUnsignedByte()
                                  throws IOException {
      return _din.readUnsignedByte();
    }

    public short readShort() throws IOException {
        return _din.readShort();
    }

    public int readUnsignedShort()
                                  throws IOException {
      return _din.readUnsignedShort();
    }

    public char readChar() throws IOException {
        return _din.readChar();
    }
    public int readInt() throws IOException {
        return _din.readInt();
    }

    public long readLong() throws IOException {
        return _din.readLong();
    }

    public String readUTF() throws IOException {
        return _din.readUTF();
    }
}

Problemet er bare, at den hele tiden melder tilbage 'class' or 'interface' expected.

Det project jeg arbejder ud fra er

import java.io.*;
import javax.microedition.rms.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

public class TestStore
    extends MIDlet
    implements CommandListener

{



  private Form mMainForm;

  public TestStore()
  {
    mMainForm = new Form("Min første MIDlet");
    mMainForm.append(new StringItem(null, "hello world"));
    mMainForm.addCommand(new Command("Afslut", Command.EXIT, 0));
    mMainForm.setCommandListener(this);
  }


  public void startApp()
  {
    Display.getDisplay(this).setCurrent(mMainForm);
  }

  public void pauseApp() {}

  public void destroyApp(boolean unconditional) {}

  public void commandAction(Command c, Displayable s)
  {
    notifyDestroyed();
  }

}

Hvordan får jeg klassen sat ind i mit projekt?

Kilde:
http://developers.sun.com/techtopics/mobility/midp/ttips/rmsbasics/
Avatar billede webcreator Nybegynder
27. april 2005 - 20:40 #1
Nu gider jeg ikke lige sidde og læse al din source. Men i korte træk laver du en instans af din klasse - i retning af :
Klasse instans = new Klasse();

instans.enMetodePaaKlassen();
Avatar billede dcgeek Nybegynder
27. april 2005 - 21:42 #2
Jeg bliver nød til at have et konkret eksempel.
Jeg er newbie til Java.
Avatar billede burningice Nybegynder
28. april 2005 - 00:25 #3
RecordStore rs = new RecordStore();
Record r = new Record(rs);

boolean b = r.readBoolean();
Avatar billede mollevp Nybegynder
28. april 2005 - 00:39 #4
cyberfessor har du arbejdet med RMS før..? Det ser pænt mærkeligt ud det du skriver der..

dcgeek - tror du skal fjerne implements DataInput
Avatar billede burningice Nybegynder
28. april 2005 - 00:53 #5
nej, ikke præcist med RMS, men de tre linjer jeg skrev er standard når man arbejder med objecter.

En klasse er som en madopskrift. Du kan ikke spise opskriften, kun den mad du laver ud fra den. På samme måde kan du ikke bruge en klasse til så meget (med mindre man leger med static). Du skal istedet lave en instans af klassen før du kan lege.
Avatar billede mollevp Nybegynder
28. april 2005 - 02:03 #6
Det er ved jeg... men det er ikke sådan man opretter en ny recordStore den tilgås nemlig som en static.. med RecordStore rs = RecordStore.openRecordStore(params);
Avatar billede burningice Nybegynder
28. april 2005 - 09:11 #7
Okay, det kunne jeg så ikke vide. Men der er ingen Static-metoder i din Record-klasse, så der skal du oprette en instans først.

Btw, hvorfor har du skiftet brugernavn midt i det hele?
Avatar billede dcgeek Nybegynder
28. april 2005 - 17:11 #8
Det virker ikke. Jeg har lavet en fil kaldet Record.java, hvor koden er som jeg skrev ovenover. Når jeg compiler den, skriver den 'class' or 'interface' expected.

Jeg har prøvet at fjerne implements Datainput.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester