<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