Generische Methoden

  • Themenstarter John_Murdoch_ohne_login
  • Beginndatum
Status
Nicht offen für weitere Antworten.
J

John_Murdoch_ohne_login

Gast
Hallo Leute,

ich habe nur eine kurze Frage bez generischen Methoden.

Folgendes Beispiel:

Code:
class genClass
{
  public <X> X tuwas()
  {
    X x = null;

    return (X) Integer.valueOf(1);
  }
}

..

  public static void main(String[] args)
  {
    genClass x = new genClass();
    System.out.println(x.<Integer> tuwas());
  }
..



Zeile 6 + 8 sind Spielereien/Experimente und haben nicht viel miteinander zu tun.

Ich übergebe der Methode den Typen Integer (als generischen Typen).
Jedoch kann ich das Objekt x in der Methode nicht wie ein Integer benutzen,
es sei denn ich caste explizit nach Integer (könnte mir mit instanceof abhelfen).

Frage:
Komme ich auch ohne explizites casting an die Methoden des Integer-Typen bei Objekt x ran?

Habe ich etwas übersehen oder ist das halt der Nachteil des generischen/allgemeinen ?
 

byte

Top Contributor
Der Typ steht zur Laufzeit nicht mehr zur Verfügung. Es geht also nur umständlich per Reflection:

Code:
Class clazz = getClass();
    while (!(clazz.getGenericSuperclass() instanceof ParameterizedType)) {
        clazz = clazz.getSuperclass();
    }
    	
    Class<T> genericClass = (Class<T>) ((ParameterizedType) clazz.getGenericSuperclass()).getActualTypeArguments()[0];
 
S

SlaterB

Gast
sehr schlecht, in beiden Methoden das x x zu nennen,
so weiß man nicht, welches x du meinst,

> in der Methode

auch hier hättest du zwischen main-Methode und tuwas-Methode unterscheiden können

--------

in der main-Methode ist das zurückgegebene Objekt ein Integer,
ohne Cast alles möglich


Code:
public class Test
{
    public static void main(String[] args)
        throws Exception
    {
        Integer y = Test.<Integer>tuwas();
        System.out.println(y.doubleValue());
    }

    public static <X>X tuwas()
    {
        X x = null;
        return (X)Integer.valueOf(1);
    }
}

-------


in tuWas() weißt du nicht welcher Typ X ist, wieso sollte das ein Integer sein?
was machst du wenn die Operation mit String aufgerufen wird?
gut dann wird
return (X) Integer.valueOf(1);
eine ClassCastException werfen, aber das ist ja kein Grund, warum der Compiler für X immer Integer annehmen sollte
 

tfa

Top Contributor
<X extends Integer>

Ist hier natürlich Blödsinn, da könntest du gleich Integer schreiben statt <X>. Aber es ist ja nur ein Beispiel.
 
G

Guest

Gast
SlaterB hat gesagt.:
in tuWas() weißt du nicht welcher Typ X ist, wieso sollte das ein Integer sein?
was machst du wenn die Operation mit String aufgerufen wird?
gut dann wird
return (X) Integer.valueOf(1);
eine ClassCastException werfen, aber das ist ja kein Grund, warum der Compiler für X immer Integer annehmen sollte

danke für die antwort auf den main-bereich.

aber bez der tuwas-methode:
ich hab das mit
Code:
return (X) Integer.valueOf(1);
nur eingesetzt damit der compiler vorerst nicht meckert.


Meine Frage ist, was bringen mir generische methoden genau? welche methoden stehen mir für die generischen typen zur verfügung bzw wie komme ich dort dran?

ich habe das gefühl dass generics nur bei collections was taugen?


public <X> X tuwas()
{
X x = 1;

//wie mache ich hier etwas mit x? in eclipse stehen mir nur die object-methoden zur verfügung

return x;
}



PS:das mit dem verwirrenden x haste recht, hab ich auf die schnelle gemacht und beim pasten nicht gemerkt.
 
S

SlaterB

Gast
tja, du kannst in der Operation wenig machen, aber das liegt an dir,
was gibst du dem Compiler auch für Infos?
"hier kommt eine Operation mit dem unbekannten Typ X"
na toll,
dazu kann man nix machen, weil das eben eine sehr geringe Grundlage ist,

bei Collections oder auch EigeneKlassen<X> macht das Sinn oder bei X extends Grundtyp und vorhandenen allgemeinen Operationen darin,
sonst wenig, stimmt
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D statische generische Methoden Java Basics - Anfänger-Themen 3
B Generische Methoden Java Basics - Anfänger-Themen 8
F Collections Generische Klasse/Methoden Java Basics - Anfänger-Themen 19
F Generische Methoden Problem Java Basics - Anfänger-Themen 5
F Generische Typen auch für statische Methoden? Java Basics - Anfänger-Themen 13
H generische Methoden Java Basics - Anfänger-Themen 5
I Generische Funktion Java Basics - Anfänger-Themen 3
B Generische Typen für dynamisches Formular Java Basics - Anfänger-Themen 3
A Generische Klassen/Interface Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
Kirby.exe Generische Objekt Instanz erstellen Java Basics - Anfänger-Themen 14
D Generische Klasse Java Basics - Anfänger-Themen 6
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
O Generische Typen Java Basics - Anfänger-Themen 9
M Generische Klassen "FlaschenRegal" Java Basics - Anfänger-Themen 13
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
J Sortierte generische Liste Java Basics - Anfänger-Themen 1
S Wie muss ich die Generische Methode schreiben? Java Basics - Anfänger-Themen 6
M Methoden Generische Klasse - ändern einzelner Attributwerte Java Basics - Anfänger-Themen 2
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
N Generische Schnittstellen Java Basics - Anfänger-Themen 2
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
D Generische Typen Java Basics - Anfänger-Themen 20
S Erste Schritte Generische Klassen sind toll ....aber warum sollte ich das je benutzen? Java Basics - Anfänger-Themen 3
L Generische Liste Java Basics - Anfänger-Themen 4
B Generische Queue programmieren Java Basics - Anfänger-Themen 5
S Generische Methode soll Objekte als Parameter erlauben die bestimmtes Interface implementieren^ Java Basics - Anfänger-Themen 9
A Probleme mit MergeSort Generische Liste Java Basics - Anfänger-Themen 0
A Generische Methode Java Basics - Anfänger-Themen 4
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
M Generische Liste Java Basics - Anfänger-Themen 4
B Generische Methode Java Basics - Anfänger-Themen 2
B Generische Klasse Java Basics - Anfänger-Themen 7
L Generische Warteschlange Java Basics - Anfänger-Themen 8
A Generische Datentypen Java Basics - Anfänger-Themen 8
bluerob generische ArrayList -> erbende Objekte auslesen Java Basics - Anfänger-Themen 24
L Generische Containerklasse Java Basics - Anfänger-Themen 9
V Methoden Umwandlung in generische Methode Java Basics - Anfänger-Themen 8
A Generische Collections und Vererbung Java Basics - Anfänger-Themen 2
S Generische HashMap Java Basics - Anfänger-Themen 2
M Klassen Generische Klassen, Personen und Gruppen Java Basics - Anfänger-Themen 6
L Generische ArrayList, CastProblem Java Basics - Anfänger-Themen 2
W generische Module Java Basics - Anfänger-Themen 2
S Generics und "generische Feldzuweisungen" Java Basics - Anfänger-Themen 5
C unterschied generische typen und supertypen als methodenparameter Java Basics - Anfänger-Themen 3
D Datentypen Generische Collections und Warnings Java Basics - Anfänger-Themen 8
E Generische Arrays durch Typecast mit Object-Array Java Basics - Anfänger-Themen 11
K Generische Klasse mit innerer Klasse | Problem mit Array Java Basics - Anfänger-Themen 6
B Was passiert, wenn eine konkrete Klasse von generische Klasse erbt? Java Basics - Anfänger-Themen 14
B Generische Vererbung was ist der Unterschied? Java Basics - Anfänger-Themen 4
W Generische Klassen Java Basics - Anfänger-Themen 3
W Generische Klassen und Casting Java Basics - Anfänger-Themen 6
J array über generische arraylist Java Basics - Anfänger-Themen 7
B instanceof Prüfung für generische Typen Java Basics - Anfänger-Themen 5
N 2 dimensionale generische Arrays Java Basics - Anfänger-Themen 9
H Statische generische Methode Java Basics - Anfänger-Themen 2
G Frage zum Ungang mit Generische Datentypen Java Basics - Anfänger-Themen 4
0x7F800000 generische arrays mal wieder )-; Java Basics - Anfänger-Themen 6
D generische methode <T> void . Java Basics - Anfänger-Themen 9
G Doppelt verkettete, generische Liste Java Basics - Anfänger-Themen 11
S Parameterübergabe: Generische Klasse Java Basics - Anfänger-Themen 4
S generische Felder Java Basics - Anfänger-Themen 2
P Generische Klasse Java Basics - Anfänger-Themen 8
C Generische Klassen, das erste Mal. Java Basics - Anfänger-Themen 8
F Generische Methode - was bringt der Wildcard Operator? Java Basics - Anfänger-Themen 7
F Generische Liste von generischen Objekten. Java Basics - Anfänger-Themen 3
N generische HashMap und Iterator Java Basics - Anfänger-Themen 2
H generische Bausteine, heterogene Datenstrukturen Java Basics - Anfänger-Themen 2
J generische klassen neue Instanz Java Basics - Anfänger-Themen 5
H Generische Klassen. Java Basics - Anfänger-Themen 16
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
U Funktionale Interfaces mit mehreren abstrakten Methoden? Java Basics - Anfänger-Themen 8
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
J Argumente in Methoden übergeben Java Basics - Anfänger-Themen 1
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
Say Class scope und Instance scope und Getter nur selbstgeschrieben Methoden Java Basics - Anfänger-Themen 11
I Gleiche Klassen und Methoden in unterschiedlichen Projekten nutzen Java Basics - Anfänger-Themen 2
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
Renjiroo Java Bmi Rechner mit Methoden Java Basics - Anfänger-Themen 4
frager2345 Thread - Methoden synchronized deklarieren Java Basics - Anfänger-Themen 10
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
berserkerdq2 Findet eine parallele Verarbeitung in Java bei Threads erst statt, wenn man die Methoden auch synchronized? Und wie sieht bei Conditions aus? Java Basics - Anfänger-Themen 8
Alen123 Erstes Arbeiten mit Methoden. Java Basics - Anfänger-Themen 5
berserkerdq2 Zwei Klassen Erben von der Klasse A, die eine Klasse kann ich an Methoden übergeben, die als Parameter A haben, die andere nicht? Java Basics - Anfänger-Themen 3
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
L Methoden in anderen Klassen nutzen Java Basics - Anfänger-Themen 6
D Gerade oder ungerade Zahl mittels Methoden Java Basics - Anfänger-Themen 13
M Erklärung von Ausnahmebehandlung in Methoden Java Basics - Anfänger-Themen 13
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
L Rekursive Methoden Java Basics - Anfänger-Themen 14
X Wie erreiche ich, dass ein Robot weitere Attribute hat, die nicht materialisiert sind, sondern nur über get/ set-Methoden simuliert sind? Java Basics - Anfänger-Themen 1
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
Kotelettklopfer Methoden nicht aufrufbar Java Basics - Anfänger-Themen 34
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben