[Java] Object uit Vector naar Byte array

Pagina: 1
Acties:

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik probeer wat data uit een database te halen en gebruik daarvoor een niet door mij gemaakte functie. Deze functie levert als resultaat op een query een Vector op. Deze Vector bestaat ook weer uit vectoren, een voor elk record.
Deze record vectoren zien er als volgt uit [ byte[], int, byte[] ]

Wat ik nu wil bereiken is de byte array er uit te halen. Maar als ik de elementAt() of get() functie gebruik dan krijg is een Object type terug. Wat ik nu wil weten is hoe ik dus de byte array er uit kan halen...

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • nxt
  • Registratie: November 2001
  • Laatst online: 04-02 09:36

nxt

casten
dus ff (byte[]) ervoor zetten

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Is het zo simpel?? Ik dacht dat je een array niet kon casten. Ik heb dit namelijk ook geprobeert. Maar ik zal wel een typo oid hebben gemaakt.

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Hmmmm, ik zit er nog steeds naast want ik krijg een ClassCastException...
Ik begin nu te twijfelen of het wel een byte array is. De data uit de vector ziet er in string vorm als volgt uit:
code:
1
[B@66a22], 456, [B@47393f]

[ Voor 53% gewijzigd door Deddiekoel op 27-10-2004 14:58 ]

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Thyzz
  • Registratie: September 2001
  • Laatst online: 18-05 15:14

Thyzz

-=leeg=-

Die B@66a22 en B@47393f lijken een geheugenadressen en geen data, klopt dat?

[ Voor 14% gewijzigd door Thyzz op 27-10-2004 15:04 ]

5325wp


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik heb eerlijk gezegd geen idee. De data is afkomstig uit een AS/400 machine met DB2. Ik maak gebruik van een functie die gebruikt maakt van de as400 jdbc driver van IBM.

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


Verwijderd

Ik zou zeggen: pak een debugger, en zet een breakpoint na initialisatie van die vector en kijk wat erin zit.

(byte[]) vector.elementAt(index) zou wel moeten werken...

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ok, maar in die vector is alles toch van het type Object? Is van een Object te achterhalen welk tpye het echt is?

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Deddiekoel schreef op 27 oktober 2004 @ 15:25:
Ok, maar in die vector is alles toch van het type Object? Is van een Object te achterhalen welk tpye het echt is?
Je kunt van ieder object achterhalen wat het type is. Je kunt bv getClass vragen en dan krijg je dus de class terug waar het object een instance van is. Ik weet trouwens niet precies hoe het zit met arrays.

klik mij

[ Voor 13% gewijzigd door Alarmnummer op 27-10-2004 15:38 ]


  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 12-05 15:26

Eelke Spaak

- Vlad -

Je moet uit de 'hoofd'-vector (dus de vector met de (byte[], int, byte[])-records erin) eerst de elementen casten naar Vector, en dan de elementen daarvan casten naar byte[]. Bv.:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Zo initialiseer je je Vector ongeveer, als ik het goed begrijp:
Vector hoofdding = new Vector();

Vector record = new Vector();
byte[] b1 = {0, 1, 2};
byte[] b2 = {4, 8, 16};
record.add(b1);
record.add(new Integer(2));
record.add(b2);

hoofdding.add(record);

// Dan moet je het zo eruit halen:

Vector rec = (Vector)hoofdding.get(0);
byte[] data = (byte[])rec.get(0);

// Etc.

TheStreme - Share anything with anyone


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Die aanpak volg ik momenteel. Dus uit hoofdvector haal ik de subvector en daaruit probeer ik de subelementen op te halen...

Wat is eigenlijk het verschil tussen elementAt() en get()

Hmmm, de output van de .getClass is weingi hoopgevend:
code:
1
class [B


Edit: Maar dit sterkt wel mijn vermoeden dat het dus om een bytearray gaat. Want als ik dit uivoer krijg ik dezelfde uitkomst:
code:
1
2
byte[] b1 = {0,1,2};
Sysyem.out.println(b1.getClass());

[ Voor 83% gewijzigd door Deddiekoel op 27-10-2004 16:04 ]

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 19-05 16:06
Deddiekoel schreef op 27 oktober 2004 @ 15:57:
Wat is eigenlijk het verschil tussen elementAt() en get()
Geen verschil. De get() is afkomstig van List.

Waar ga je de byte Array voor gebruiken?

[ Voor 10% gewijzigd door TukkerTweaker op 27-10-2004 16:04 ]


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

[B betekend dat het een byte array is. Er zou staan [Byte, als het een Byte array zou zijn.

"Beauty is the ultimate defence against complexity." David Gelernter


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:13

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee er zou [Ljava.lang.Byte; staan als het een Byte array is ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ok, maar als het byte array is waarom werkt de cast (byte[]) dan niet?
Ik krijg dan de melding:
code:
1
java.lang.ClassCastException: java.lang .String

Ik snap deze melding alleen niet. Waarom faalt hij nu? Isset om het Object een String is? Want dan snap ik weer niet waarom getClass dan Class [B geeft

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:05

Janoz

Moderator Devschuur®

!litemod

Laat je stukje code eens zien. Ik heb namelijk het vermoeden dat je op de verkeerde plek naar je fout aan het zoeken bent. Graag incl de juiste regelnummers en eventueel de stacktrace ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

.oisyn schreef op 27 oktober 2004 @ 16:05:
Nee er zou [Ljava.lang.Byte; staan als het een Byte array is ;)
Mijn fout.

"Beauty is the ultimate defence against complexity." David Gelernter


  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Ik ben eruit. Uiteindelijk zat het hem in de configuratie van de JDBC driver...

http://www-1.ibm.com/serv...toolbox/faqjdbc.htm#faqB8

Als je ";translate binary=true" toevoegd aan de URL heb je nergens last van!

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 19-05 16:06
Deddiekoel schreef op 27 oktober 2004 @ 17:52:
Ik ben eruit. Uiteindelijk zat het hem in de configuratie van de JDBC driver...

http://www-1.ibm.com/serv...toolbox/faqjdbc.htm#faqB8

Als je ";translate binary=true" toevoegd aan de URL heb je nergens last van!
Dus het was gewoon een String object in de vector

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 12-11-2025

Deddiekoel

Gadget nerd

Topicstarter
Nee, het was een binary die niet vertaald werd in door de jdbc driver. Met de toevoeging wordt deze echter wel vertaald...

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2

Pagina: 1