Java Reference
In-Depth Information
in der Methode push kein Casting mehr und die Warnungen sind weg. Prima! Will man aber
den Rückgabetyp T in der Methode pop beibehalten, was ja sinnvoll ist, so kommt man an
einem Casting in dieser Methode nicht vorbei. Und siehe da: Die Warnung („Type safety:
Unchecked cast from Object to T“) ist wieder da!
Listing 1.3 Keller (Stack) als Generics-Klasse (2. Variante)
package javacomp.basics;
public class GenericStack<T>
{
private int top;
private Object[] stack;
public GenericStack(int initialLength)
{
top = 0;
stack = new Object[initialLength];
}
public void push(T o)
{
if(top == stack.length)
{
// Keller vergroessern auf das Doppelte
Object[] newStack = new Object[2 * stack.length];
for(int i = 0; i < stack.length; i++)
{
newStack[i] = stack[i];
}
stack = newStack;
}
stack[top++] = o;
}
public T pop()
{
if(top > 0)
{
T result = (T) stack[top-1];//Warnung
stack[top-1] = null; //garbage collection
top--;
return result;
}
else
{
return null;
}
}
}
Auch diese Variante funktioniert. Allerdings müssen wir auch bei dieser Variante eine War-
nung in Kauf nehmen. Eine echte Lösung gibt es in diesem Fall nicht. Als Ausweg kann ich
nur empfehlen, sich für die erste oder zweite Variante zu entscheiden und die Annotation
@SuppressWarnings("unchecked") vor die Methoden zu schreiben, die eine Warnung
erzeugen.
 
Search WWH ::




Custom Search