java泛型

 1   /**
 2      * 泛型定义
 3      * 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
 4      *
 5      * 泛型的规则
 6      * 1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
 7      * 2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
 8      * 3、泛型的类型参数可以有多个。
 9      * 4、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName("java.lang.String");
10      * 5、泛型有通配符上限与通配符下限,例如:
11      *  (1):public class Demo<T extends Comparable & Serializable> {}。// T类型就可以用Comparable声明的方法和Seriablizable所拥有的特性了
12      *  (2):还可以向上限制,如<? super Double>,表示类型只能接受Double及其上层父类类型,如Number、Object类型的实例。
13      *  习惯上称为“有界类型”。
14      *  
15      */

例子:

 1    private static  <T> T getObject(Class<T> o) throws Exception{//定义了一个泛型方法
 2         T t=o.newInstance();
 3         return t;
 4     }
 5 
 6     static class Book<M>{//定义了一个泛型类
 7         private M name;
 8 
 9         public M getName() {
10             return name;
11         }
12 
13         public void setName(M name) {
14             this.name = name;
15         }
16     }
1  public static void main(String[] args) throws  Exception {
2         Book<String> b=new Book<String>();
3         b.setName("a");
4         Book<Integer> b1=new Book<Integer>();
5         b1.setName(2);
6         System.out.println(b.getName());
7         System.out.println(b.getClass()==b1.getClass());
8 
9     }

运行结果为true.

泛型常见什么T、K、V、E这种符号是参数的形式参数,自己也可以定义成什么M、N之类的。符号?使用是在当我们类型不能确定时使用,也就是通配符。

要多学习。。。。。。

原文地址:https://www.cnblogs.com/huzi007/p/5175693.html