Cast ohne neues Object zu erzeugen

Status
Nicht offen für weitere Antworten.

Kaffeebohne

Bekanntes Mitglied
Hallo ich möchte einen Cast machen ohne ein neues Objekt zu erzeugen.

Hintergrund ich habe einen Methodenkopf der als Parameter Object zulässt. Dieses Object ist in Wirklichkeit eine Insantz von bsp. Buch. Die Methode macht irgendwas mit dem Buch und setzt ein paar Werte. Es muss aber genau dieses Buch sein (Referenz)

Wenn ich aber caste muss ich ein neues Objekt erzeugen.

BSP.

Code:
public Object doSomething(Object object) {
	// geht nicht
	object = (Buch)object;
	object.setID(123);
}
 
R

Roar

Gast
:? es muss natürlich: Buch buch = (Buch) object; buch.set... heißen :)
 

willi69

Mitglied
Probiere es doch mal so:
Code:
public Object doSomething(Object object) {
   // sollte gehen
   ((Buch)object).setID(123);
}

Geht natürlich in die Hose, wenn der Cast fehlschlägt.
 

Kaffeebohne

Bekanntes Mitglied
@roar

Genau das wollte ich ja vermeiden :) , da wenn der das Objekt mit Werten füllt und bei einem Fehlschlag eine Exception wirft, ich dann aber die bisherigen Daten weiterverarbeiten kann wenn es sich um eine Refernez handelt (Ich weiss Java arbeitet nur mit Referenzen, denke aber du weisst was ich mit dieser Aussage meine.)

@willi69

Hmm hab das gerade in Netbeans reingehauen - Leider geht das nicht die IDE sagt:

unexpected type
required variable
found value
 
R

Roar

Gast
Kaffeebohne hat gesagt.:
Genau das wollte ich ja vermeiden :) , da wenn der das Objekt mit Werten füllt und bei einem Fehlschlag eine Exception wirft, ich dann aber die bisherigen Daten weiterverarbeiten kann wenn es sich um eine Refernez handelt (Ich weiss Java arbeitet nur mit Referenzen, denke aber du weisst was ich mit dieser Aussage meine.)
ne, ich versteh den satz nich :? :autsch:
bei
Buch buch = (Buch) object
wird kein neues objekt angelegt.
es passiert in der vm genau das gleiche wie wenn du sagst
o = (Buch) object
oder
((Buch) object).set..
 

willi69

Mitglied
Sorry, ich hatte den return-Type der Methode übersehen.

Code:
    public Object doSomething(Object obj) {
        ((Buch)obj).setId(123);
        return obj;
    }

Was aber eigentlich "suboptimal" ist. Einfacher:

Code:
    public void doSomething(Object obj) {
        ((Buch)obj).setId(123);
    }

Es kommt aber, wie so häufig im Leben, auf den konkreten Zweck an.
 
B

bygones

Gast
ich hoffe die Methode ist noch ein wenig komplexer, da ansonsten die verwendung von Object fragwürdig ist....
 

Kaffeebohne

Bekanntes Mitglied
Danke funktioniert. :)

@roar
Du hast recht, es wird kein neues Objekt erzeugt :cool:


@wili69
Denke hier ist es gut angebracht.

Weil

@deathbyaclown
die Methode ein Teil einer Strategie ist und die Klassen die die Strategie implementieren sollen nicht zig tausend überladene Methoden haben.
 
B

bygones

Gast
Kaffeebohne hat gesagt.:
@deathbyaclown
die Methode ein Teil einer Strategie ist und die Klassen die die Strategie implementieren sollen nicht zig tausend überladene Methoden haben.
dann hoff ich eine gut überlegte Strategie... genauso unsinnig ist es zig instanceof o.ä. abfragen zu machen, um dann die nötigen casts in der methode zu haben....
 

Kaffeebohne

Bekanntes Mitglied
Denke schon,

es wird nur einmal pro Strategy geinstanced und gecasted. Das finde ich im Austausch für Modularität und Flexiblität durchaus akzeptabel.
 

byte

Top Contributor
Kaffeebohne hat gesagt.:
@roar
Du hast recht, es wird kein neues Objekt erzeugt :cool:

Präziser: Es wird eine neue Referenz erzeugt, diese zeigt jedoch auf das selbe Objekt im Speicher. Mehr dazu siehe FAQ.


deathbyaclown hat gesagt.:
dann hoff ich eine gut überlegte Strategie... genauso unsinnig ist es zig instanceof o.ä. abfragen zu machen, um dann die nötigen casts in der methode zu haben....

Stimmt natürlich, aber häufig lässt es sich nich vermeiden, wenn man auf schon fertige generische Komponenten oder Frameworks zurückgreift. Die meisten sind leider noch nicht auf Generics umgestellt.
 
B

bygones

Gast
byto hat gesagt.:
deathbyaclown hat gesagt.:
dann hoff ich eine gut überlegte Strategie... genauso unsinnig ist es zig instanceof o.ä. abfragen zu machen, um dann die nötigen casts in der methode zu haben....

Stimmt natürlich, aber häufig lässt es sich nich vermeiden, wenn man auf schon fertige generische Komponenten oder Frameworks zurückgreift. Die meisten sind leider noch nicht auf Generics umgestellt.
Interfaces ?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Object cast exception Allgemeine Java-Themen 7
Zeppi Cast Object in Generics Allgemeine Java-Themen 4
Tarrew RMI Java RMI - com.sun.proxy.$Proxy1 cannot be cast to Funktionen Allgemeine Java-Themen 0
G Klassen Cast auf Argumentenklasse via Reflection? Allgemeine Java-Themen 10
M Cast double[]-->Object[] oder Vector<double[]> Allgemeine Java-Themen 3
M Harten Cast vermeiden Allgemeine Java-Themen 7
S Unchecked cast from Component to JComboBox<String> Allgemeine Java-Themen 3
P Reflection "Cast" Allgemeine Java-Themen 5
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
V Gibt es einen Variablen Cast? Allgemeine Java-Themen 8
Z Cast von Long zu Integer funktionert nicht Allgemeine Java-Themen 3
N cast über string Allgemeine Java-Themen 24
C int zu byte cast - verständnis Allgemeine Java-Themen 3
E Heap und Comparable (warning: [unchecked] unchecked cast) Allgemeine Java-Themen 2
MQue cast DefaultMutableTreeNode Allgemeine Java-Themen 2
M Type-Cast Allgemeine Java-Themen 3
G Cast Allgemeine Java-Themen 4
O unchecked cast? Allgemeine Java-Themen 4
S instanceof liefert true, aber cast funktioniert nicht! Allgemeine Java-Themen 6
reibi Unchecked cast Allgemeine Java-Themen 1
T cast Object to Double[] Allgemeine Java-Themen 2
G Trotz Generics Cast-Fehler! Allgemeine Java-Themen 5
G Object cast via Reflection Allgemeine Java-Themen 8
R cast Integer[] zu int[] Allgemeine Java-Themen 2
G Cast von String zu Enumeration Allgemeine Java-Themen 2
N Warning "The Cast from Object to" Allgemeine Java-Themen 9
D Cast schlägt fehl : Object[] zu Button[] Allgemeine Java-Themen 2
Y unnecessary cast & Performance Allgemeine Java-Themen 29
B unchecked cast Error Allgemeine Java-Themen 2
D Cast Exeption Allgemeine Java-Themen 4
T JNI: jcharArray: warning: cast to pointer from integer of. Allgemeine Java-Themen 5
K Cast von Properties und Hashmap Allgemeine Java-Themen 9
E NumberFormatException bei cast auf double Allgemeine Java-Themen 5
H [unchecked] unchecked cast Problem Allgemeine Java-Themen 5
N Taschenrechner ohne explizite und implizite Datentypen Allgemeine Java-Themen 5
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
O Maven ein externes jar laden ohne die Applikation neu zu kompilieren Allgemeine Java-Themen 4
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
N mit sysout, ohne sysout Allgemeine Java-Themen 17
O Programmierprüfung auf moodle ohne Hilfsmittel... Allgemeine Java-Themen 23
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
M Switches ohne String Allgemeine Java-Themen 18
A Java JDK ohne Oracle Konto Allgemeine Java-Themen 5
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
A Java ListNode Element einfügen ohne Bibliothek Allgemeine Java-Themen 6
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
Thallius Zeitzone zu einem LocalDate hinzufügen aber ohne es zu ändern... Allgemeine Java-Themen 2
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
X Adjazenzliste ohne ArrayList Allgemeine Java-Themen 6
N Keylistener ohne Dazugehörige Gui Allgemeine Java-Themen 6
P Input/Output entfernte Datei mit Java öffnen ohne Download Allgemeine Java-Themen 5
Kirby.exe Keyboard Input ohne Enter Allgemeine Java-Themen 43
T Abgeleitetes Interface public ohne Schlüsselwort "interface"? Allgemeine Java-Themen 3
S Potenzieren mit rationalen Potenzen ohne Math.pow Allgemeine Java-Themen 16
F Timestamp in Oracle ohne Formatierung reinbekommen Allgemeine Java-Themen 7
M Drucken ohne Dialog Allgemeine Java-Themen 1
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
S Input/Output Jave.utill.logging ohne Default-Locale also in Englisch Allgemeine Java-Themen 3
J ftp - delete file ohne appache Allgemeine Java-Themen 8
H float Berechnung: Ergebnis ohne wissenschaftliche Notation Allgemeine Java-Themen 5
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
E String in Zahl umwandeln, ohne Befehl Integer.parseInt Allgemeine Java-Themen 3
S Java Plugin System (ohne OSGI) Allgemeine Java-Themen 10
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
Aruetiise Swing JOptionPane ohne denn Thread zu pausieren Allgemeine Java-Themen 1
RalleYTN Audiolänge einer MP3 Datei erhalten ohne diese vollständig zu laden Allgemeine Java-Themen 15
RalleYTN 2D-Grafik Bild ohne AWT, Swing und JavaFX rotieren Allgemeine Java-Themen 12
A BufferedReader ohne System.in Allgemeine Java-Themen 9
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
B Applikation ohne (direkt)Java installiert zu haben auszuführen Allgemeine Java-Themen 8
RalleYTN Datentypen Herausfinden ob Object ein Array ist ohne den Typen des Arrays zu kennen? Allgemeine Java-Themen 12
OnDemand JavaMail ohne Anhang senden Allgemeine Java-Themen 4
N String ins Clipboard kopieren ohne makieren. Allgemeine Java-Themen 12
T Ziffernsumme ohne String Operatoren Allgemeine Java-Themen 4
E Threads Ausführung in Threads ist langsamer als ohne Threads Allgemeine Java-Themen 13
R NullPointerException Ohne Grund Allgemeine Java-Themen 5
RalleYTN JPEG mit CMYK(ohne JAI oder TwelveMonkeys!) Allgemeine Java-Themen 0
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
Y String to Double ohne ParseDouble Allgemeine Java-Themen 11
S Methoden ohne Methodenkopf ?! Allgemeine Java-Themen 5
L Daten ohne Datenbank richtig abspeichern Allgemeine Java-Themen 5
A Linux: Native Library mit Rootrechten ohne Prozess mit sudo zu starten Allgemeine Java-Themen 1
T Threads Input/Output im Thread - Datei ohne Inhalt Allgemeine Java-Themen 1
A Konstrukt ohne Main für Xml-Parser Allgemeine Java-Themen 1
S Performante Visualisierung groẞer Datenmengen (ohne JFreeChart) Allgemeine Java-Themen 22
M Permutation ohne Wiederholung mit rekursion Allgemeine Java-Themen 4
C HtmlUnit Daten einer Tabelle bekommen ohne, dass diese eine ID aufweist Allgemeine Java-Themen 1
F File.listFiles ohne .sort Allgemeine Java-Themen 6
H Unicode ausgeben ohne Umwandlung - geht das? Allgemeine Java-Themen 3
L iText PDF-Generierung ohne Speichern Allgemeine Java-Themen 10
R Wie schaffe ich es, dass java zB 100 zählt ohne ständig "else if" hinschreiben zu müssen? Allgemeine Java-Themen 7
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
J Array ohne vorher festgelegte Länge oder Wie wandle ich Zahlen in Zahlen mit anderen Basen um? Allgemeine Java-Themen 6

Ähnliche Java Themen


Oben