PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: Referenz -> byte[] -> Referenz



peschmae
12-04-2003, 07:57
hallo,

kann ich in Java eine Referenz auf ein beliebiges Objekt in ein byte - Array und dann wieder zurück konvertieren (im selben Programm). Wäre noch praktisch für DND in SWT...

So ähnlich wie in C/C++, wo Pointer afaik ja auch Zahlen sind und auch als solche rumgeschoben werden können.

Beim ganzen Zirkus sollte natürlich verhindert werden, dass die Garbage Collection just in diesem Moment zuschlägt, in dem die Referenz im byte[] - Array sitzt und damit für die GC wohl unsichtbar ist...

MfG Peschmä

anda_skoa
12-04-2003, 12:47
Ich versteh nicht ganz, wozu das gut sein soll.

Wenn du die Referenz behälst, kann sie der GC nicht einsammeln.

Warum willst du sie unbedingt in ein byte Array umwandeln?

Ciao,
_

peschmae
12-04-2003, 14:36
wenn ich die Referenz aber in irgend nen Mist umwandle, den der GC nicht als referenz betrachtet...

wieso das?
Nun, SWT erlaubt DND für folgende Datentypen:
byte[]
File als String
RTF

wobei byte[] als Ansatzpunkt für eigene Klassen zu vernwenden ist. Und da wär sowas schon praktisch.

als was soll ich denn nun wohl meine Virtuellen Dateien transportieren (Wir hattens schon früher davon, jetzt läufts ;-))?
Evtl. könnte ich auch den schon Programmierten Mechanismus zum Speichern in eine Textdatei missbrauchen (mit einem ByteArrayOutputStream), aber wenn ich da nur die Referenz rumschubsen müsste wäre das wohl viel eleganter und schneller

MfG Peschmä

anda_skoa
12-04-2003, 16:08
byte[] würde Sinn machen, wenn du das Objekt selbst transportieren möchtest.
Also serialisert in ein byte[] Array.

Ich denke für dein Problem (DND innerhabl des selben Prozesses) gibt es eine besser Lösung.
Kannst du mir vielleicht einen Link zu SWT DND Doku posten?

Ciao,
_

peschmae
12-04-2003, 18:48
die SWT und Eclipse - Apidoc gibts unter http://dev.eclipse.org:8080/help/content/help:/org.eclipse.platform.doc.isv/reference/api/index.html
(gut versteckt ;-))

dort unter org.eclipse.swt.dnd hats in den diversen Pages ein bisschen Text dazu (z.B. bei org.eclipse.swt.dnd.DragSource)

MfG Peschmä

anda_skoa
13-04-2003, 16:54
Hmm, folgende Idee.

Sagen wir, das DND findet zwischen zwei Widgets der selben Ebene statt (sie wurden von der selben Klasse aus erzeugt).

Dann kann der Erzeuger an beide ein Object[] oder ein Array deiner virtual File Klassen an beide Widgets übergeben.
Als Array Länge nimmt man 1.

Die DND Quelle gibt dann bei bestätigtem Drop einfach die Referenz an Position 0 in das Array, das DND Ziel holt sich die Referenz und setzt null.

Der Drag selbst muss praktisch keine Daten enthalten, du kannst ja einen FileTransfer nehmen und den virtuellen Namen setzen, falls du etwas angeben willst.

Ciao,
_

peschmae
14-04-2003, 09:44
da es hier nur um DND in ein und demselben Table handelt, ist das glaube ich eine gute und einfach zu realisierend eidee :D

MfG Peschmä

anda_skoa
14-04-2003, 10:29
Im selben Object brauchst du nicht mal ein Array, da reicht direkt eine Variable. :)

Ciao,
_