Gibt es einen Variablen Cast?

V

vanny

Gast
So,

ich würde gerne einen CellRenderer schreiben, wobei ich bei value ja ein Object übergebe und dieses dann caste um 1. auf die Methoden zugreifen zu können und 2. den passenden Returnwert zu haben, wobei 2. eh als Component zurückfliegt.

Dennoch würde ich gerne diesen Cast variabel halten um den CellRenderer öfter nutzen zu können.

Klare Frage:
Ist sowas möglich?
 
Zuletzt bearbeitet von einem Moderator:

nrg

Top Contributor
hab das dazu gefunden:

Java:
/**
 * @author Tom
 */
public class DynamicCastExample {
 
  /**
   * @param args
   */
  public static void main(String[] args) throws Exception {
    IFoo foo = new Bar();
    Bar bar = as(foo,Bar.class);
    System.out.println(bar);
  }
 
  private static <TTargetType> TTargetType as(Object o, Class<TTargetType> clazz) {
    //...
    if(null == o || null == clazz){
      return null;
    }else if(clazz.isAssignableFrom(o.getClass())){
      return clazz.cast(o);  
    }else{
      return null;
    }
  }
 
  static interface IFoo {}
  static class Foo implements IFoo {}
  static class Bar extends Foo {}
}

Quelle
 

musiKk

Top Contributor
Wobei man sich dabei vor Augen halten sollte, was einem das bringt. Man spart sich ein [c]instanceof[/c] und verwendet stattdessen [c]DynamicCastExample#as()[/c]. Allerdings muss man jetzt einen zusätzlichen Nullcheck durchführen - der ist bei [c]instanceof[/c] ja inklusive.

Überhaupt. Ein dynamischer Cast ist eigentlich ein Widerspruch in sich (egal, ob man sich in einer statisch oder dynamisch typisierten Sprache befindet). In statisch typisierten Sprachen muss auf der linken Seite immer ein konkreter Typ stehen. Man weiß also, was man will. Nach diesem Typen castet man also nicht dynamisch, sondern statisch. Ob man das per [c]instanceof[/c] und expliziten Cast oder durch die obige Hilfsmethode macht, ist eigentlich ziemlich egal.

Selbst wenn man davon ausginge, man könnte dynamische Casts à la

Code:
varClass = BestClassOfTheWorld;
varClass v = (varClass) someObject;

durchführen, wie will man dann auf Methoden von [c]v[/c] zugreifen? [c]varClass[/c] kann ja alles sein.

Das einzige, was da Sinn ergibt, ist ein gemeinsames Interface zu erstellen und Instanzen von Klassen, die dieses implementieren, zu übergeben (in diesem Fall dem CellRenderer). Wer "dynamisch casten" will, hat imho das Typsystem nicht verstanden.
 

nrg

Top Contributor
ja, ich hab das auch nur dazu gefunden und dachte, dass es ihm vielleicht weiterhilft. dynamisch ist es natürlich nicht, weil man die class genauso kennen muss aber wie du schon sagst ist "typsicherer programmiersprache" und "dynamischer cast" ein widerspruch an sich.
 
B

bygones

Gast
So,

ich würde gerne einen CellRender schreiben, wobei ich bei value ja ein Object übergebe und dieses dann Caste um 1. auf die Methoden zugreifen zu können und 2. den passenden returnWert zu haben, wobei 2. eh als Component zurückfliegt.

Dennoch würde ich gerne diesen Cast variabel halten um den CellRender öfter nutzen zu können.

Klare Frage:
Ist sowas Möglich?
wenn all deine Objekte auf einem bestimmten Interface zu Grunde liegen dann nutze dieses und gut ist.

Wenn nicht dann schreib lieber mehrere CellRenderer, als irgendeinen Murks mit casts oder sonstigen zu versuchen.
 
V

vanny

Gast
Jup,

is mir auch schon aufgefallen, dass der Ansatz quark ist:eek:

Mit InstanceOf ist mir voll gedient.
Sry, dass ich euch mit der fixen Idee belästigt hab ^^

Gruß Vanny
 

nrg

Top Contributor
ich würde eher in richtung bygones' vorschlag gehen und das über gemeinsame interfaces versuchen zu lösen
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Gibt es einen Nachteil bei dem JDK 8? Allgemeine Java-Themen 7
L Gibt es in Java einen Property Editor? Allgemeine Java-Themen 2
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
B Gibt es einen Unterschied zwischen Java 1.2 und Java 2? Allgemeine Java-Themen 7
E Gibt es so etwas wie einen Windows Listener? Allgemeine Java-Themen 6
M Gibt es eigentlich einen Standalone-Java-ICQ-clone Allgemeine Java-Themen 19
S auf einmal gibt es einen fehler. Allgemeine Java-Themen 3
berserkerdq2 Gibt es eine saubere Dokumentation von Jfoenix? Allgemeine Java-Themen 1
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
E Class.getResourceAsStream() gibt null zurück Allgemeine Java-Themen 2
Tiago1234 CellReference cr = new CellReference("") gibt den falschen Wert zurück Allgemeine Java-Themen 49
F Gibt es mittlerweile eine Alternative zu DaisyDiff Allgemeine Java-Themen 2
H Apache fop -- welche Möglichkeit gibt es um den Fortschritt anzuzeigen (Progressbar) Allgemeine Java-Themen 5
M Warum gibt es Unterschiedliche Kommentar Zeichen Allgemeine Java-Themen 15
Tobero Eclipse Window builder gibt es da sowas wie @ignore? Allgemeine Java-Themen 1
pkm javax.script.ScriptEngineManager gibt mir keine Engine Allgemeine Java-Themen 4
M Openjdk - gibt es auch eine Openjre? Allgemeine Java-Themen 7
Zrebna Gibt es eine Möglichkeit eine NPE zu vermeiden, wenn null returned wird? Allgemeine Java-Themen 3
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
F Überprüfen ob es Überschneidungen von Uhrzeiten (vom Typ Calendar) gibt Allgemeine Java-Themen 10
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
LimDul Spezifkation, wann es deprecation Warnings gibt Allgemeine Java-Themen 1
C Variablen == gibt immer false aus. Allgemeine Java-Themen 2
E gibt es BigDouble in Java ? Allgemeine Java-Themen 14
S Gibt es eigentlich Java Source Code Interpreter..? Allgemeine Java-Themen 13
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
R JDK installieren Gibt es ab 2019 überhaupt noch Java? Allgemeine Java-Themen 6
P JSpinner gibt leeren Wert zurück Allgemeine Java-Themen 5
B Gibt es eine Funktion die den Datentyp einer Variablen ermittelt? Allgemeine Java-Themen 8
N Gibt es etwas allgemeineres as Object? Allgemeine Java-Themen 16
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
H NetBeans geotools 15 oder 16 - welche Abhängingkeiten gibt es? Welche Jars brauche ich? Allgemeine Java-Themen 4
P Prüfen ob es Variable mit Namen gibt der als String übergeben wird Allgemeine Java-Themen 7
S Welche Java Techologien gibt es fürs Frontend Allgemeine Java-Themen 4
V Gibt es eine Möglichkeit die Internet auslastung mit Java auszulesen Allgemeine Java-Themen 11
S gibt testText nicht aus Allgemeine Java-Themen 3
R Es gibt keine dummen Fragen (hab ich mal gehört) Allgemeine Java-Themen 11
L Methoden Methode gibt mir beim verschlüsseln mit RSA 0 bytes aus ? Allgemeine Java-Themen 1
L Konsole gibt Smileys aus Allgemeine Java-Themen 3
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
O Collections ListIterator gibt Inhalt von ArrayList nicht aus Allgemeine Java-Themen 3
G Threads Gibt es eine Möglichkeit des Nichtblokierens? Allgemeine Java-Themen 5
C Vergleich von Enums gibt inkorrekte Werte Allgemeine Java-Themen 6
Jats Programm mit CMD Befehl hängt sich auf oder gibt error = 5 aus Allgemeine Java-Themen 4
R JNI if abfrage gibt immer false zurück. Allgemeine Java-Themen 7
J Eclipse Elipse gibt mir keine Vorschläge mehr :( Allgemeine Java-Themen 6
G Gibt es so eine SortedMap? Allgemeine Java-Themen 21
Z Boolean Abfrage gibt kein Boolean zurück, aber warum? Allgemeine Java-Themen 6
J Warum gibt es keinen Webbrowser auf Java-Basis? Allgemeine Java-Themen 8
E Gibt es Befehle für Kursor auf Konsole ? Allgemeine Java-Themen 3
J Logger gibt nicht alle Level aus Allgemeine Java-Themen 3
J Calendar gibt falsche Wochenanzahl zurück Allgemeine Java-Themen 3
M Gibt es ein Jar - das alle Componente Automatisch anpasst? Allgemeine Java-Themen 14
R Gibt es eine JVM, die besser mit dem Speicher umgeht? Allgemeine Java-Themen 7
G Jarfile gibt keine Textnachrichten aus Allgemeine Java-Themen 2
S [1/2done] Woher bekommt man libarys die es erst ab 1.6 gibt. Allgemeine Java-Themen 10
G Gibt es etwas ähnliches wie den ReadKey bei Pascal? Allgemeine Java-Themen 3
D Gibt es indizierte Arrays in Java? Allgemeine Java-Themen 3
S Decimalformat gibt falsche Werte aus Allgemeine Java-Themen 3
G Da Jikes nicht mit java 5 geht, gibt es eine andere. Allgemeine Java-Themen 4
M Gibt es ein Foren-System, dass in Java programmiert ist? Allgemeine Java-Themen 51
N char.At gibt Zeichenkette aus. aber leider 2x Allgemeine Java-Themen 10
G was gibt es für mögliche datenbanken? Allgemeine Java-Themen 6
TRunKX Gibt es ne fertige Java Funktion die Dateien vergleicht? Allgemeine Java-Themen 4
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
Robert Zenz Ich brauche bitte mal kurz einen Sanity/Reality-Check betreffend Tests. Allgemeine Java-Themen 9
R Wie gestaltet man einen Authentifizierungsflow? Allgemeine Java-Themen 6
berserkerdq2 Jemand einen Tipp wie man ein Javafx-Hintergrund "dynamisch" macht Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
A verschachtelte for-Schleife in einen Stream umwandeln? Allgemeine Java-Themen 4
N Wie mache ich einen UnitTest? Allgemeine Java-Themen 16
D Klassendesign für einen Pascal Interpreter Allgemeine Java-Themen 6
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
O Warum kann ich so keine Elemente löschen und erhalte einen IllegalStateException? Allgemeine Java-Themen 4
M Schleife für einen TicTacToe Computer Allgemeine Java-Themen 5
N Validator für einen SQL-Befehl Allgemeine Java-Themen 22
ZH1896ZH Best Practice Wie erstellt man am besten einen Kalender? Allgemeine Java-Themen 3
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
Zrebna FileUtils.cleanDirectory() - aber einen sub-Ordner "verschonen" Allgemeine Java-Themen 1
MiMa Datei verschieben hat einen Fehler?? Allgemeine Java-Themen 20
L Generator für einen Parser implementieren Allgemeine Java-Themen 13
W Haben Konstruktoren in Java eigentlich immer mindestens einen Parameter? Allgemeine Java-Themen 4
J Wie kann ich von Vornherrein einen Fokus auf ein Objekt entfernen? Allgemeine Java-Themen 3
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
A Mithilfe von einer Nummer einen Namen finden n-Beziehung Allgemeine Java-Themen 8
B Long in einen Double umwandeln und im Label anzeigen Allgemeine Java-Themen 7
E Hat der Compiler einen Fehler oder warumbeendet return nicht eine Methode ? Allgemeine Java-Themen 7
MoxxiManagarm Ich brauche einen smarten Ansatz Allgemeine Java-Themen 23
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
E Einen Bot Programmieren. Allgemeine Java-Themen 6
F Operationen/Methoden einen WebService im Browser mit Apache Axis aufrufen Allgemeine Java-Themen 4
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
J Einen Thread in einer Schleife Allgemeine Java-Themen 2
P [Webdriver] einen Datensatz signieren Allgemeine Java-Themen 0
R MAC-Adresse eindeutig für einen PC ? Bezug zu Netzwerk, wieso ? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben