Generische Array

Hero

Mitglied
Hallo,
ich versuche gerade Generische Array zu erzeugen aber irgendwie haut es nicht ganz so hin. Also ich hab mir es so gedacht gehabt, dass ich eine Generisches Array in einer Klasse erstellen und die Größe, soll über einen Konstruktor übergeben bekommen.

Also wie erstellt man einen generischen Array?

Ich hab mich im Internet dämlich gesucht aber nichts gefunden außer das es in Java total komisch ist es zu erstellen.

Ich hoffe ihr könnt mir helfen.
 

Hero

Mitglied
Unter Generisch verstehe ich ansich, dass man nicht den gleichen Algorithmus auf mehrere Typen anwenden muss.

Ich mach das nur um Java besser zu verstehen aber ich dachte mir Methoden zu benutzen, wo man die Position und <E> Wert angibt, wo es dann reingespeichert wird oder mir einen Wert zurück gibt, wenn ich der Methode eine Position übergebe.
 

AlexSpritze

Bekanntes Mitglied
Meinst du eine ArrayList?

Java:
    ArrayList<Object> arrayList= new ArrayList<Object>(5);
      arrayList.add(new Object());
      Object o = arrayList.get(0);
 

Hero

Mitglied
Ich dachte ehr an sowas

Java:
class GenArrayBox<T> 
{ 
  private T[] array = new T[ 2 ];   // Hier sagt Eclipse, dass er keinen generischen Array vom Typ T erstellen kann.
  T[] getArray() { return array; } 
}
 
G

guest636

Gast
Sowas geht nunmal nicht, da generische Typinformationen zur Laufzeit schlichtweg nicht mehr existieren. Stichwort Type Erasure. Warum verwendest du eigentlich keine Collection?
 
G

Gast2

Gast
Ja, das mit den Generics und Arrays ist immer so ne Sache ;)

Du könntest deine Klasse so aufbauen:
Java:
class GenArrayBox<T> {
	private final T[] array;

	public GenArrayBox() {
		array = (T[]) new Object[2];
	}

	T[] getArray() {
		return array;
	}
}
Dann knallts allerdings wenn du folgendes versuchst:
Java:
		GenArrayBox<Integer> gen = new GenArrayBox<Integer>();
		Integer[] arr = gen.getArray();
Du kannst in Java kein
Code:
new T[2]
Array erzeugen. Tuts nicht auch ne Liste?

EDIT:
Was natürlich geht ist folgendes:
Java:
class GenArrayBox<T> {
	private final T[] array;

	public GenArrayBox(Class<T> c) {
		array = (T[]) Array.newInstance(c, 2);
	}

	T[] getArray() {
		return array;
	}
}
Dann musst du allerdings im Konstruktor die Klasse übergeben. Dann klappt auch dein getArray() ;)
 
Zuletzt bearbeitet von einem Moderator:

Hero

Mitglied
Super Danke, dass ich mit den Casten nicht früher drauf gekommen :D.

Ja eine Liste wäre natürlich optimaler aber als ich zum erstenmal von den generischen Typen gehört hatte wollte ich lernen wie es Funktioniert und einen Array womit man quasi jeden Typen initialisieren kann, ist doch interessant.
 
G

Gast2

Gast
Naja, dafür gibts ja die Methode
Code:
Array.newInstance
;)

Wenn man mit generics arbeitet, dann sollte man sich möglichst weit von Arrays fernhalten, die beiden passen einfach (noch?) nicht zusammen.
 

Hero

Mitglied
Eine Frage hätte ich noch und zwar,
jetzt hab inzwischen die Methoden angelegt wo, die länge des Arrays bestimmt wird, wo Werte in in dem Array gespeichert werden usw.

Jetzt zum Frage: der Nutzer sagt:

Java:
MyGenArray<Integer> test= new MyGenArray<Integer>(Integer.class,3);
		test.setLengt(4);
		test.setElement(5, 1); //Fehler ArrayIndexOutOfBoundsException

Das soll nur bei try/catch abgefangen werden und an array.length+1 gespeichert werden

dafür hab ich, folgendes geschrieben:

Java:
public void setElement(int pos, E data){
		 try{
			 array[pos]= data; //Das geht, wenn der Parameter 
		 }catch (ArrayIndexOutOfBoundsException e){
			  
			 System.err.print(" Der übergebene Wert ist außerhalb, des gültigen Bereiches");		
			 
			 array=(E[]) new Object[array.length+1];
			 array[array.length]=data;
			 System.out.println(" Da der Wert ungültig ist, wird für Data ein neues Array Behählter angelegt an der Position array.length+1");
			 }
	 }

Das Problem ist, dass er nur die Fehlermeldung ausgibt aber den Wert nicht an array[array.length+1] speichert. Wie kann ich ich ihn sagen, dass er weiterarbeiten soll?
 

hdi

Top Contributor
Das Problem ist, dass im catch-Block wieder eine ArrayIndexOutOfBoundsException fliegt:

Java:
array[array.length]=data;

Du denkst scheinbar, dass hier array.length noch den alten Wert hat. Aber in der Zeile drüber hast du der Variablen array ja bereits das neue Array zugewiesen, entsprechend liefert array.length auch genau die Größe dieses neue Arrays. Und ein Zugriff auf das lenght-te Fach ist immer OutOfBounds, denn Array-Indizes beginnen bei 0. Das letzte Fach ist immer length-1.

Abgesehen davon: Dir ist schon klar, dass alle alten Werte im ursprünglichen Array nun verloren sind, und im neuen Array nicht enthalten sind?!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
F Verständnisprobleme Aufgabenstellung Aktionsobjekte und generische Listen Allgemeine Java-Themen 1
J Generische Interface - Problem Allgemeine Java-Themen 3
J Generische Interfaces mehrfach einbinden Allgemeine Java-Themen 11
M Methoden Generische Methode für ArrayList Allgemeine Java-Themen 7
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
D generische Interface und konkrete Methode Allgemeine Java-Themen 3
T Interface mit generische Typen Allgemeine Java-Themen 5
A Methoden Generische Methode mit Arrays - Source Compatibility 1.7 benötigt, wieso? Allgemeine Java-Themen 3
M Interface Generische Klassen mit mehreren Typen überschreiben Allgemeine Java-Themen 0
H Interface Generische Schnittstelle (rekusiv) Allgemeine Java-Themen 2
C generische Authentifizierung Allgemeine Java-Themen 7
JCODA Generische Map Frage Allgemeine Java-Themen 10
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
M Generische Methoden mit Java und globale Variablen Allgemeine Java-Themen 9
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
D Methode für generische enummap/enum Allgemeine Java-Themen 10
B Generische Datentypen MergeSort Allgemeine Java-Themen 5
M Generische Klassen Allgemeine Java-Themen 3
M generische Listener Allgemeine Java-Themen 2
S Generische Typen: Frage dazu Allgemeine Java-Themen 11
H generische Klasse Realtion Allgemeine Java-Themen 2
T Ideenfindung: Generische Transportklasse? Allgemeine Java-Themen 3
C Generische Methode (Schablone) Allgemeine Java-Themen 8
G generische Klasse als Parameter einer generischen Klasse Allgemeine Java-Themen 5
leifg Rechenoperationen auf generische Datentypen Allgemeine Java-Themen 10
B Generische Typen instanzieren Allgemeine Java-Themen 11
R Generische Listener und Sender Allgemeine Java-Themen 12
M Generische Datentypen Allgemeine Java-Themen 14
S Generische Liste Allgemeine Java-Themen 30
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
S Generische Methode Allgemeine Java-Themen 13
R Frage zu einfügen in generische lineare Liste Allgemeine Java-Themen 7
S Generische Methoden Allgemeine Java-Themen 7
D Statische, generische Methode will nicht. Allgemeine Java-Themen 2
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
Willi.We Array sortieren Allgemeine Java-Themen 5
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben