Rückgabewert runtime

squawking

Mitglied
Hallo,

ich möchte eine Klasse haben, mit einer Methode getKey(). Der Rückgabetyp dieser Methode soll aber erst zur Laufzeit entschieden werden. Geht das irgendwieoder wiederspricht das der Typsicherheit in Java?
 

Marco13

Top Contributor
"Lokal" kann der Typ erst später bekannt sein:
Java:
class SomeClass<T>
{
    public T getKey() { ... }
}

"Global" muss der Typ aber bekannt sein, wenn man Typsicherheit haben will, d.h. es müßte dann irgendwo sowas geben wie
Java:
SomeClass<String> c = new SomeClass<String>();
String s = c.getKey();

Das kann aber auch "weiter oben" passieren, man kann also auch sowas machen wie
Java:
class OtherClass<T>
{
    private SomeClass<T> someClass = ...

    private void doSomething()
    {
        process(someClass.getKey());
    }


    private void process(T t)
    {
        System.out.println(t);
    }
}
und dann entsprechend
Java:
OtherClass<String> c = new OtherClass<String>();
c.doSomething();
 

André Uhres

Top Contributor
Vielleicht kann auch der (meistens zu vermeidende) Rückgabetyp "Object" helfen? So dynamisch wie bei Python geht's mit Java allerdings nicht.
 

squawking

Mitglied
Vielen Dank erstmal für die Antworten. Das ganze geht in Richtung Designentscheidung. Habe auch überlegt, dass ich ein Interface schreibe, welches dann von 2/3 Klassen implementiert wird. Nur kann ich in diesem Interface dann ja auch nicht die entsprechende Methode mit dem Rückgabewert angeben, weil die sich ja ändert. Wenn ich dann im Code gegen das Interface programmiere, steht aber die entsprechende Funktion nicht zur Verfügung. Jemand eine Idee wie man so etwas grundsätzlich macht? Vom Prinzip her sind die Klassen ja alle gleich. Nur dieses eine Attribut kann eben unterschiedliche Datentypen enthalten.
 

squawking

Mitglied
Vielleicht hat ja noch einer eine Idee? Auch in Richtung design-pattern oder so? Wenn mein Anliegen nicht klar ist, erkläre ich es auch nochmal gerne. in der Real-World habe ich Objekte der Form "Typ1", "Typ2", "Typ3". Diese Objekte sind quasi gleich. einziger Unterschied besteht in dem Rückgabewert einer Funktion. diese gibt mal int oder str oder sonstwas zurück. Die Funktionalität soll irgendwie bequem sein, d.h. so sachen wie "class someClassOfTyp1" kommt eigentlich nicht in Frage. Dann müsste der Programmierer immer die GENAUE Klasse angeben, um die es sich gerade handelt. Hoffe das versteht jemand.

edit: ich ewrde es wohl mit Generics machen. Dann gebe ich beim Interface keinen Typ-Parameter an und bekomme dann von der entsprechenden Methode "Object" zurück. Scheint wirklich die beste (einzige) Lösung zu sein.

edit: mmh, naja so richtig toll scheint das auch nicht zu sein, wenn ich nochmal darüber nachdenke, weil die Methode dann ja Objekte vom Typ "Object" zurück gibt und diese dann vor einer Zuweisung erst gecastet werden müssen.
 
Zuletzt bearbeitet:

squawking

Mitglied
Ich bin jetzt noch über eine ganz andere Frage gestolpert. Eigentlich wollte ich das Design nach möglichkeit sprachunabhängig halten, was man ja auch tun sollte. Wenn ich aber darüber nachdenke, wie das von mir in diesem Thread beschriebene Problem zu lösen ist, komme ich auch grundsätzlich unterschiedliche Lösungen in verschiedenen Sprachen. In Python mit seiner dynamischen typisierung kann ich das zB genau so machen, wie ich es prinzipiell vorhatte.
Ist es also gar nicht möglich ein oo-design sprachunabhängig zu entwerfen?
 

faetzminator

Gesperrter Benutzer
Wenn du einen Typen XY als Rückgabetyp erwartest, bzw. zu einem konkreten Typen castest, dann musst du zur Entwicklungszeit doch genau diesen Typen kennen. Also kannst du auch Generics verwenden!?
 

martin0815

Mitglied
Erstelle halt eine Klasse die alle möglichen Typen als Member enthält. Ein Objekt dieses (Multi)Typs gibst Du dann immer zurück und je nach Zustand ist halt nur ein Member gültig bzw. sinnvoll.

Klingt aber irgendwie unelegant ^^

Aber vermutlich besser als Object...
 

André Uhres

Top Contributor
Vor allem weiß ich nicht, was dabei der Sinn in der wirklichen Welt ist. Mein Arbeitsplatz setzt sich z.B. zusammen aus Bildschirm, Maus und Tastatur. Welchen Sinn hätte es, wenn er nie komplett wäre, sondern immer nur entweder ein Bildschirm, oder eine Tastatur oder eine Maus wäre?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Rückgabewert von Runtime.getRuntime().exec() Allgemeine Java-Themen 2
J Rückgabewert Directories Filechooser Allgemeine Java-Themen 2
U in java an einen Rückgabewert aus matlab rankommen Allgemeine Java-Themen 2
S Threads Rückgabewert in Asynchronen Schedulers Allgemeine Java-Themen 7
P Methode mit beliebigem Rückgabewert Allgemeine Java-Themen 3
S Methoden Eigene Klasse als Rückgabewert Allgemeine Java-Themen 6
E rückgabewert ist immer null Allgemeine Java-Themen 2
K Als Rückgabewert ode call by referenz was ist sauberer? Allgemeine Java-Themen 12
E Rückgabewert von Jave in Bash - Script Allgemeine Java-Themen 4
S Methode mit, vom aufrufenden Objekt abhängigen, Rückgabewert Allgemeine Java-Themen 13
S Rückgabewert von threads? Allgemeine Java-Themen 7
V Rückgabewert von Methode nie erreicht aber gefordert? Allgemeine Java-Themen 6
M Rückgabewert einer Klasse Allgemeine Java-Themen 4
T invoke() einer Methode - Probleme mit Rückgabewert Allgemeine Java-Themen 5
U Probleme bei Rückgabewert Allgemeine Java-Themen 28
Z Array als Rückgabewert einer Methode Allgemeine Java-Themen 5
M Thread mit Rückgabewert Allgemeine Java-Themen 4
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
M this application requires a java runtime environment 1.8.0 Allgemeine Java-Themen 2
S Gibt es eine Moeglichkeit die Runtime Ausführung zu analysieren..? Allgemeine Java-Themen 7
J Verschiedene Runtime Versionen gleichzeitig? Allgemeine Java-Themen 12
K Threads Runtime und Process Probleme Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
J Probleme mit der Java-Runtime Allgemeine Java-Themen 10
M Runtime.exec() verursacht auf manchen Systemen Probleme - Ursache unklar Allgemeine Java-Themen 2
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
Thallius Runtime.getRuntime().exec " escapen? Allgemeine Java-Themen 9
W Threads Mit Thread und Runtime externe Programme öffnen Allgemeine Java-Themen 0
C Runtime Problem Allgemeine Java-Themen 1
P programm öffnen mit der runtime Allgemeine Java-Themen 9
N Runtime.getRuntime().exec Problem mit find Allgemeine Java-Themen 3
W JavaDoc Runtime-Exceptions: Wie sinnvoll anzeigen? Allgemeine Java-Themen 14
P Runtime bzw. RAM-Auslastung eines Prozesses Allgemeine Java-Themen 9
M Befehl in Runtime ausführen der Eingabe benötigt Allgemeine Java-Themen 3
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
T Bluescreen bei Runtime.exec(); Allgemeine Java-Themen 8
I Runtime.getRuntime().exec Problem Allgemeine Java-Themen 4
G Runtime.exec beendet Programm unter Linux, wenn Java Programm beendet wird Allgemeine Java-Themen 3
N Runtime.exec() Exception Problem Allgemeine Java-Themen 3
N Runtime.exec() Allgemeine Java-Themen 7
S Runtime Exceptions in eine Datei schreiben Allgemeine Java-Themen 7
N Internet Explorer mit bestimter Java Runtime starten Allgemeine Java-Themen 2
truesoul Runtime.getRuntime().exec nebenbei ausführen Allgemeine Java-Themen 12
S Runtime.getRuntime()... Allgemeine Java-Themen 6
Z Runtime.getRuntime().exec-Problem Allgemeine Java-Themen 4
J Runtime.exec setzt Fokus auf Frame Allgemeine Java-Themen 2
V Probleme mit Runtime.exec() Allgemeine Java-Themen 3
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
M Runtime.getRuntime().exec(cmd); auf windows ... Allgemeine Java-Themen 2
martin82 Java Runtime Update >17 - SwingWorker Änderungen? Allgemeine Java-Themen 7
T Runtime.exec() Allgemeine Java-Themen 3
X Wann ist Runtime.getRuntime().exec mit Copy fertig? Allgemeine Java-Themen 10
W java ohne runtime Allgemeine Java-Themen 2
G Output eines über Runtime.getRuntime.exec gestarteten Jars Allgemeine Java-Themen 6
N runtime.exec() Problem Allgemeine Java-Themen 6
W Runtime.getRuntime().exec() Allgemeine Java-Themen 10
lordcarlos Runtime exec und mplayer (linux) Allgemeine Java-Themen 11
C JApplet und Runtime.getRuntime().exec() Allgemeine Java-Themen 2
K Runtime.exec mit Timeout Allgemeine Java-Themen 5
0 Runtime.exec() VLC starten klappt nicht Allgemeine Java-Themen 9
G Runtime.exec - Prozess "mittendrin" "einfach Allgemeine Java-Themen 4
G Runtime? Allgemeine Java-Themen 3
J Runtime.exec unter win vista? Allgemeine Java-Themen 10
M Probleme Runtime.getRuntime().exec(Start.cmd); Allgemeine Java-Themen 10
F Problem mit Runtime.exec() Allgemeine Java-Themen 8
S Problem mit Runtime. Allgemeine Java-Themen 2
E Programm mit der Runtime ausführen Allgemeine Java-Themen 8
M Runtime & Exception Allgemeine Java-Themen 3
J ServiceInterface - Runtime() > jemand eine idee? Allgemeine Java-Themen 2
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
V Java-Programm vom USB-Stick ohne Runtime-Installation Allgemeine Java-Themen 18
W In Runtime Output schreiben Allgemeine Java-Themen 5
J Probiert mal bitte aus (Thread + Runtime) Allgemeine Java-Themen 10
A Installierte Runtime ermitteln Allgemeine Java-Themen 3
M Runtime.exec unter Vista (Administrator Rechte) Allgemeine Java-Themen 2
K Probleme mit Runtime.getRuntime().exec Allgemeine Java-Themen 6
T ausführbares jar File mit integriertem Java Runtime 6+JOGL Allgemeine Java-Themen 7
A Runtime.getRuntime().exec mit Warte auf Beendigung - Wie? Allgemeine Java-Themen 7
R Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 4
the[V]oid Ausführen von "javac" über Runtime.exec() Allgemeine Java-Themen 4
W Runtime Error216 Runtime error 217 Allgemeine Java-Themen 6
B Runtime Verzeichniss wechseln Allgemeine Java-Themen 8
C Java SE Runtime 6 Update 1 - IE 7 und FF 2.0 - Allgemeine Java-Themen 6
F Runtime.getRuntime().exec mit Linux und Leerzeichen Allgemeine Java-Themen 3
D runtime.exec --> Prozess hängt sich auf Allgemeine Java-Themen 7
T Runtime.exec -> Prozesskontrolle abgeben ? Allgemeine Java-Themen 11
B Probleme mit Runtime.getRuntime().exec("cmd.exe") Allgemeine Java-Themen 4
M Runtime.getRuntime().exec(txt_rsync_option.getText()); Allgemeine Java-Themen 12
G Programm wird von java cmd runtime nicht aufgerufen? Allgemeine Java-Themen 13
S Runtime.exec() berechtigungen Allgemeine Java-Themen 5
S Runtime.exec und X Umgebung Allgemeine Java-Themen 2
A Runtime Process bricht nicht ab! Allgemeine Java-Themen 7
F Shell-Programme per Runtime.exec() starten und mehr? Allgemeine Java-Themen 4
K Runtime.exec und DFÜ-Verbindung Allgemeine Java-Themen 5
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
P Copy mit Runtime.exec() unter Unix Allgemeine Java-Themen 4
D Problem mit Runtime.getRuntime().exec() Allgemeine Java-Themen 14
L Runtime.getRuntime.exec() Allgemeine Java-Themen 7
T Probleme mit Runtime.exec in Jar File Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben