打印任意类型的对象列表:使用java通配符<?>打印
public static void printList(List<?> list, PrintStream out)
{
for(Iterator<?> iterator = list.iterator(); iterator.hasNext();)
{
out.println(iterator.next().toString());
}
}
<?>表明我们接受任意类型的对象作为参数,此时候编译也不会出现unchecked的相关警告信息。
泛型使用:自定义某种collection、cotainer(参数为数据类型),针对性质的处理。单一字母代表一个类型参数。
class Box<T>
{
protected List<T> contents;
public Box()
{
contents = new ArrayList<T>();
}
public int getSize()
{
return contents.size();
}
public boolean isEmpty()
{
return (getSize() == 0);
}
public void add(T object)
{
contents.add(object);
}
public T grab()
{
if(!isEmpty())
{
return contents.remove(0);
}
else
{
return null;
}
}
}
如果在此基础上要想限制某一种数据类型,可以如下所示限制:
class NumberBox<N extends String> extends Box<N> //限制仅仅容许的类型为String。
{
public NumberBox()
{
super();
}
public String sum()
{
StringBuilder sb = new StringBuilder();
for(Iterator<N> i = contents.iterator(); i.hasNext();)
{
sb.append(i.next());
}
return sb.toString();
}
}