Casten durch generic vermeiden ??

Status
Nicht offen für weitere Antworten.

Nader

Mitglied
ist es möglich in folgenden Code das Casten in allen getter-Methoden der Klasse B zu vermeiden? wie sollte man die Klasse A generifizieren, damit sowas möglich ist????:L

Danke im Voraus!

Java:
abstract class A {

	private final List<Object> data = new ArrayList<Object>();

	public A(Object... args) {
		for (Object a : args) {
			data.add(a);
		}
	}

	protected Object get(int index) {
		return index < data.size() ? data.get(index) : null;
	}
}

class B extends A {

	public B() {
		super("name", "vorname", new Integer(40));
	}

	public String getName() {
		return (String) get(0);
	}

	public String getVorname() {
		return (String) get(1);
	}

	public Integer getAlter() {
		return (Integer) get(2);
	}
}
 
S

SlaterB

Gast
evtl. geht eine Methode

protected <T> T getT(int index) {
return (T) get(index);
}
und dann z.B.

public String getName() {
return getT(0);
}
 
B

bygones

Gast
anstatt hier mit generics zu versuchen einen fragwuerdigen code zu "verbessern" wuerde ich eher schauen was das tun soll...

warum die Daten nicht in ein sinniges Objekt bekommen, als die Variablen in eine Liste zu packen ?

Java:
    class B  {
      private String name;
      private String vorname;
      private int alter;

        public B() {

        }

        public String getName() {
            return name;
        }

        public String getVorname() {
            return vorname;
        }

        public int getAlter() {
            return alter;
        }
    }
 

Nader

Mitglied
evtl. geht eine Methode

protected <T> T getT(int index) {
return (T) get(index);
}
und dann z.B.

public String getName() {
return getT(0);
}

Danke! damit könnte man zumindestens das Casten auf eine Methode beschränken.

Was ich aber eigentlich anstrebe, ist die variablen Parametern von A zu generifizieren, aber wie?
 
S

SlaterB

Gast
eine Klasse A<T,U,V> kann man natürlich definieren,
mit
public T getObject1();
public U getObject2();
public V getObject3();

wenn du sie aber so allgemein baust, was bygones schon bemängelt, dann wohl nur in derartiger Listenform,
und wenn man mit Indexen arbeitet, fallen unterschiedliche Typen weg
 

Nader

Mitglied
anstatt hier mit generics zu versuchen einen fragwuerdigen code zu "verbessern" wuerde ich eher schauen was das tun soll...

warum die Daten nicht in ein sinniges Objekt bekommen, als die Variablen in eine Liste zu packen ?

Java:
    class B  {
      private String name;
      private String vorname;
      private int alter;

        public B() {

        }

        public String getName() {
            return name;
        }

        public String getVorname() {
            return vorname;
        }

        public int getAlter() {
            return alter;
        }
    }

Ziel ist eine zentrale Klasse, die für Verwaltung der Daten zuständig ist. Alle Subclasses geben nur Attribute raus, ohne die zu verwalten.
 
B

bygones

Gast
sorry, aber das klingt fuer mich nach krudem design bzw ziel.

in diesem sinne: WARUM ?

bygones

wie willst du die Parameter von A noch mehr generifizieren (?)... wenn alles reinkommen kann, musst du eben mit Object leben.

allein das sollte schon zeigen dass die Idee vll suboptimal ist
 

Nader

Mitglied
..allein das sollte schon zeigen dass die Idee vll suboptimal ist

ob optimal oder suboptimal, das war ja nicht die Frage! Im Praxis reicht manchmal OO nicht aus und man muss es halt bisschen tricksen!;)

wenn man A folgendermassen modifizieren würde:

Java:
interface O {
}

public A(O... args) {
}

würde dann gehen? oder anders ausgedrückt ist es überhaupt möglich generic bei varargs zu verwenden??
 
S

SlaterB

Gast
der zuletzt gepostete Code enthält gar nix generisches, ein Interface ist nicht generisch,
ein Parameter einer Methode darf selbstverständlich ein Interface sein

addActionListener(ActionListener x)

den ... ist das ebenso egal
 

Nader

Mitglied
der zuletzt gepostete Code enthält gar nix generisches, ein Interface ist nicht generisch,
ein Parameter einer Methode darf selbstverständlich ein Interface sein

addActionListener(ActionListener x)

den ... ist das ebenso egal

sorry, so meinte ich nicht, wollte nur sagen, wie sollte man O generisch machen, damit A mit Varargs auch generisch wird?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
Java:
class B extends A<String> {

	public B() {
		super("name", "vorname");
	}

	public String getName() {
		return get(0);
	}

	public String getVorname() {
		return get(1);
	}

}

abstract class A<T> {

	private final List<T> data = new ArrayList<T>();

	public A(T... args) {
		for (T a : args) {
			data.add(a);
		}
	}

	protected T get(int index) {
		return index < data.size() ? data.get(index) : null;
	}
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Baldur Datentypen Unnötiges Casten in Templatecode? Allgemeine Java-Themen 4
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
F Klassen Casten Allgemeine Java-Themen 2
W Datentypen Datentyp "Number" casten? Allgemeine Java-Themen 5
J byte - hex - byte.. casten Allgemeine Java-Themen 8
M Casten von Liste nach Array schlägt fehl?? Allgemeine Java-Themen 3
S Type safety Warnings beim casten von Generics Allgemeine Java-Themen 6
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
C casten vom Typ Object nach Double[][] Allgemeine Java-Themen 2
J Casten ueber generischen Parameter? Allgemeine Java-Themen 5
Q Typen von Generics & Casten Allgemeine Java-Themen 3
M Andere Möglichkeit zu casten Allgemeine Java-Themen 8
G Objekte automatisch casten Allgemeine Java-Themen 10
M wie casten ? Allgemeine Java-Themen 7
T casten von Objekten aus einer ArrayList Allgemeine Java-Themen 4
F Welcher Datentyp in welchen casten? Allgemeine Java-Themen 11
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
D toArray() bei ArrayList casten Allgemeine Java-Themen 10
N treenode casten? Allgemeine Java-Themen 2
R object zu array casten. Allgemeine Java-Themen 2
S Dynamisches Casten Allgemeine Java-Themen 5
D Object in int casten Allgemeine Java-Themen 7
D Optimierung beim Casten Allgemeine Java-Themen 4
P Dynamisch casten - möglich? wie? Allgemeine Java-Themen 5
S Compliance 5.0 prob: HashMap von obj casten Allgemeine Java-Themen 3
M Typkonvertierung und Casten? Allgemeine Java-Themen 6
M Object in HashMap casten Allgemeine Java-Themen 4
C Reflection und variable casten ! Allgemeine Java-Themen 10
K Klasse dynamisch casten Allgemeine Java-Themen 14
S ClassCastException beim Casten in eine Klasse Allgemeine Java-Themen 7
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
H Dienst durch ssh forwarding absichern? Allgemeine Java-Themen 15
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
Y Wie bekomme ich durch getImage an das Image heran? Allgemeine Java-Themen 1
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
W Java Telegram Bot - Eingabe durch User Allgemeine Java-Themen 2
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
I Buchstabe durch seinen Nachfolger ersetzen Allgemeine Java-Themen 29
M Jdeps-Error durch multi-release Allgemeine Java-Themen 6
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
C OpenCl Setup und durch JavaCode ansteuern Allgemeine Java-Themen 17
J Erste Schritte Datenspeicherung durch Java Allgemeine Java-Themen 6
M Hässliche Schrift auf Graphics durch deriveFont Allgemeine Java-Themen 0
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Aruetiise Interface Position durch JButton ermitteln Allgemeine Java-Themen 5
K Jar/DLL Abhängigkeiten durch User angeben lassen Allgemeine Java-Themen 6
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
T AWT AWT-EventQueue-0 Null_Pointer_Exception durch Variable Allgemeine Java-Themen 12
RalleYTN Problem bei Schleife die durch einen 2D raum iterieren soll Allgemeine Java-Themen 1
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Quadrieren einer Zahl nur durch Addition Allgemeine Java-Themen 5
L Vererbung If-Else ersetzen durch was? Allgemeine Java-Themen 20
K OOP OOP Gui Spiel + Vererbungen Probleme durch Nichtwissen!! Allgemeine Java-Themen 1
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
B Counting Sort (Sortieren durch Zählen) Allgemeine Java-Themen 13
Z Durch Bäume iterieren Allgemeine Java-Themen 3
M Unterbrechnung durch Echtzeitbefehle? Allgemeine Java-Themen 4
G Suchweg durch Binärbaum speichern Allgemeine Java-Themen 4
L Label- & Textfelderzeugung durch Button Allgemeine Java-Themen 1
S RandomAccessFile durch bytearrayinputstream ersetzen Allgemeine Java-Themen 4
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
H Optimierung durch Threads Allgemeine Java-Themen 31
S JTable: Model durch ein anderes ersetzen Allgemeine Java-Themen 2
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
F Live Ticker durch Screenshots Allgemeine Java-Themen 22
C Hex Zeichen ersetzen durch leer Zeichen Allgemeine Java-Themen 5
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
N Algorithmus durch Workflow Allgemeine Java-Themen 7
R Windows-Firewall lässt Java nicht durch Allgemeine Java-Themen 17
E Oracle kann durch 0 teilen !?! Allgemeine Java-Themen 7
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
J Java Datei durch Java Datei öffnen Allgemeine Java-Themen 16
M Arraynamen durch Variable festlegen lassen Allgemeine Java-Themen 5
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
F Slash durch Systembezogenen Fileseparator ersetzen Allgemeine Java-Themen 18
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
D Updaten von Klassen durch jar.exe zerstört diese. Update durch WinRAR gelingt! Allgemeine Java-Themen 2
A SWT Ausgabetext Shellscript durch Java Allgemeine Java-Themen 8
Ark Array durch Interface ersetzen Allgemeine Java-Themen 7
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
fastjack Hardwareinformationen durch Java auslesen Allgemeine Java-Themen 7
S durch Code steppen Allgemeine Java-Themen 7
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
M eigene Klasse durch Composition mit java.io.File erweitern Allgemeine Java-Themen 3
C Markierung durch Maus lesen Allgemeine Java-Themen 9
T Synchronisation von Listen bei Zugriffen durch mehrere Prozesse Allgemeine Java-Themen 15
N Scanner läuft nicht durch Allgemeine Java-Themen 2
F kamera auslösen durch Programm Allgemeine Java-Themen 17
M Maus durch JavaProgramm bewegen Allgemeine Java-Themen 2
Dissi Itext - Anordnung von Elementen durch PDF Writer Allgemeine Java-Themen 2
H Performancegewinn durch Mehrfachobjeknutzung Allgemeine Java-Themen 3
N Fehler abfang läuft doppelt durch Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben