<pre name="code" class="java">public interface GenericsTest<T> {
	public T show();
	
}
class Color1{
	public void play(){
		System.out.println("我是红色!");
	}
}
class Color2{
	public void play(){
		System.out.println("我是绿色!");
	}
}3.2泛型类
public class GenericsTest<T> {
	private T color;
	public static void main(String[] args) {
		GenericsTest<Color1> generics1=new GenericsTest<Color1>();
		generics1.color.play();//输出:我是红色!
		GenericsTest<Color1> generics2=new GenericsTest<Color1>();
		generics2.color.play();//输出:我是绿色!
	}
}
class Color1{
	public void play(){
		System.out.println("我是红色!");
	}
}
class Color2{
	public void play(){
		System.out.println("我是绿色!");
	}
}import java.util.ArrayList;
import java.util.List;
public class GenericsTest{
	public static void main(String[] args) {
		List<Integer> list=new ArrayList<Integer>();
		List<String> li=new ArrayList<String>();
		System.out.println(list.getClass());//输出class java.util.ArrayList
		System.out.println(list.getClass()==li.getClass());//输出true,说明它们是同一个类
	}
}3.3泛型方法
public class GenericsTest{
	public static <T> void play(T x){
		System.out.println(x);
	}
	public static void main(String[] args) {
		Integer i=2014;
		String str="lavor_zl";
		play(i);//输出结果:2014
		play(str);//输出结果:lavor_zl
	}
}import java.util.ArrayList;
import java.util.List;
public class GenericsTest{
	public static void main(String[] args) {
		List<Integer> list=new ArrayList<Integer>();
		list.add(2014);
		List li=list;//这就是擦除
	}
}import java.util.ArrayList;
import java.util.List;
public class GenericsTest{
	public static void main(String[] args) {
		List<Integer> list=new ArrayList<Integer>();
		list.add(2014);
		List li=list;
		List<String> l=li;
		li.get(0);//原来存放的数据取出来时被强制转换成String类型
	}
}PS:List<String> list=new ArrayList<String>(),右边"<>"里面的类型必须和左边一致且不可以省略。
Java1.7以后右边"<>"里面的类型可以省略,这就是Java1.7泛型的"菱形"语法。
原文:http://blog.csdn.net/lavor_zl/article/details/41356187