Hallo alle miteinander!
Ich habe vor kurzem angefangen mich mit Generics in Java zu beschäftigen und habe mir zum besseren Verständnis ein kleines Dynamisches Array zusammengebastelt. Hier mal der, auf die wichtigsten Elemente gekürzte Code:
An den kommentierten Stellen erhalte ich aber in Eclipse eine "Unchecked cast"-Warnung. Nun stellt sich mir die Frage, ob man diese Warnungen auf irgendeine Art und Weise wegbekommen könnte (außer durch '@SuppressWarnings("unchecked")'), da ich zu den Leuten gehöre die Warnungen ungern ignorieren. Oder ist es womöglich "normal" das man bei der Verwendung von Generics solche Warnungen erhält, denn, wie eingangs erwähnt, habe ich ja noch nicht soviel mit Generics zu tun gehabt.
Schon einmal vielen Dank im voraus.
Ich habe vor kurzem angefangen mich mit Generics in Java zu beschäftigen und habe mir zum besseren Verständnis ein kleines Dynamisches Array zusammengebastelt. Hier mal der, auf die wichtigsten Elemente gekürzte Code:
Java:
import java.util.Arrays;
public class DynamischesArray<E>
{
private Object[] data;
private int size;
private int capacity;
public DynamischesArray()
{
this(16); // 16 = Standardkapazität
}
public DynamischesArray(int capacity)
{
this.size = 0;
this.capacity = (capacity < 1 ? 16 : capacity);
this.data = new Object[capacity];
}
public E get(int index)
{
if(index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
return (E)data[index]; // Warnung: Type safety: Unchecked cast from Object to E
}
public E remove(int index)
{
if(index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
E temp = (E)data[index]; // Warnung: Type safety: Unchecked cast from Object to E
if(index == size - 1) {
data[index] = null;
} else {
for(int i = index; i + 1 < size; ++i) {
data[i] = data[i + 1];
}
}
--size;
return temp;
}
public E set(int index, E element)
{
if(index >= size) {
throw new ArrayIndexOutOfBoundsException();
}
E temp = (E)data[index]; // Warnung: Type safety: Unchecked cast from Object to E
data[index] = element;
return temp;
}
/* Weitere Methoden wie z. B. add(), size(), etc. */
}
Schon einmal vielen Dank im voraus.
Zuletzt bearbeitet: