class GenericStack<E>
{
public final static int INITIAL_SIZE=16;
private E[] elements;
private int size;
public GenericStack()
{
this(INITIAL_SIZE);
}
public GenericStack(int initialCapacity)
{
elements =(E[])new Object[initialCapacity];
}
public E push(E value)
{
if(size>=elements.length)
{
E[] temp=(E[])new Object[elements.length*2];
System.arraycopy(elements,0,temp,0,elements.length);
elements=temp;
}
return elements[size++]=value;
}
public E pop()
{
return elements[size-1];
}
public boolean isEmpty()
{
return size==0;
}
public int getSize()
{
return size;
}
public static void main(String[] args)
{
GenericStack<String> stack1=new GenericStack<String>();
stack1.push("abc");
stack1.push("bcd");
GenericStack<Integer> stack2=new GenericStack<Integer>();
stack2.push(1);
stack2.push(2);
}
}
public class WildCardDemo1
{
public static void main(String[] args)
{
GenericStack<Integer> intStack=new GenericStack<Integer>();
intStack.push(1);
intStack.push(2);
intStack.push(-2);
System.out.print("The max number is "+max(intStack));
}
public static double max(GenericStack<? extends Number> stack)
{
double max=stack.pop().doubleValue();
while(!stack.isEmpty())
{
double value=stack.pop().doubleValue();
if(value>max)
max=value;
}
return max;
}
}WildCardDemo1.java:12: 警告: [unchecked] 未经检查的类型使用
找到: java.lang.Object[]
需要: E[]
elements =(E[])new Object[initialCapacity];
^
WildCardDemo1.java:18: 警告: [unchecked] 未经检查的类型使用
找到: java.lang.Object[]
需要: E[]
E[] temp=(E[])new Object[elements.length*2];
^
2 警告
GenericStack<Integer> intStack=new GenericStack<Integer>();
这句话不是已经泛型实例化了吗?怎么还是会unchecked呢?
{
this(INITIAL_SIZE);
}这样就可以了