Hey,
ich bin gerade ein bisschen verwirrt. Ich habe vor eine generische Collection zu bauen und bin dort auf eine Sach gestoßen, welche ich nicht so wirklich kapiere. Wenn ich mir die ArrayList, den Vector oder die HashMap anschaue, dann werden die Elemente in einem Object-Array, bzw Entry-Array gehalten, welches ja nicht generisch ist. Fragt man dann die Elemente ab, wird gecastet und es kommt mit dem richtigen Typen raus. So wie alles sein sollte. Programmiere ich nun ähnlich, bekomme ich eine Warnung. "Unchecked cast from Object to E". Ich hänge mal kurz ein kleines Bsp ran.
Das ist ja so im Grunde genommen das gleiche, was bei den genannten Collections auch passiert.
Warum bekomme ich dort eine Warnung? Kann man diese umgehen (nicht unterdrücken)? Und wenn ja wie? Oder ist diese Warnung wirklich nur mit @SuppressWarnings( "unchecked" ) zu "beheben"?
Ich weiß, dass man sich auch ein generisches Array mit
erstellen kann. Aber das muss ich ja auch wieder mit @SuppressWarnings( "unchecked" ) unterdrücken.
Ich bin in dem Sinne gerade echt verwirrt und würde mich freuen, wenn ihr mir helfen könntet ein bisschen Licht ins dunkel zu bringen ^^
mfg
die4me
ich bin gerade ein bisschen verwirrt. Ich habe vor eine generische Collection zu bauen und bin dort auf eine Sach gestoßen, welche ich nicht so wirklich kapiere. Wenn ich mir die ArrayList, den Vector oder die HashMap anschaue, dann werden die Elemente in einem Object-Array, bzw Entry-Array gehalten, welches ja nicht generisch ist. Fragt man dann die Elemente ab, wird gecastet und es kommt mit dem richtigen Typen raus. So wie alles sein sollte. Programmiere ich nun ähnlich, bekomme ich eine Warnung. "Unchecked cast from Object to E". Ich hänge mal kurz ein kleines Bsp ran.
Java:
public class MeineCollection< E > {
private Object[] elementData;
private int count;
public MeineCollection() {
elementData = new Object[ 10 ];
count = 0;
}
public boolean add( E value ) {
elementData[ count++ ] = value;
return true;
}
public E get( int index ) {
return ( E ) elementData[ index ];
}
}
Warum bekomme ich dort eine Warnung? Kann man diese umgehen (nicht unterdrücken)? Und wenn ja wie? Oder ist diese Warnung wirklich nur mit @SuppressWarnings( "unchecked" ) zu "beheben"?
Ich weiß, dass man sich auch ein generisches Array mit
Java:
( E[] ) Array.newInstance( componentType, size );
Ich bin in dem Sinne gerade echt verwirrt und würde mich freuen, wenn ihr mir helfen könntet ein bisschen Licht ins dunkel zu bringen ^^
mfg
die4me