zoukankan      html  css  js  c++  java
  • 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之类的。符号?使用是在当我们类型不能确定时使用,也就是通配符。

    要多学习。。。。。。

  • 相关阅读:
    胡昊—第9次作业--接口及接口回调
    胡昊—第8次作业--继承
    软件工程第三次作业——关于软件质量保障初探
    胡昊—第7次作业--访问权限、对象使用
    胡昊—第6次作业—static关键字、对象
    20194670自动生成四则运算题第一版报告
    《现代软件工程—构建之法》第一章总结
    第四次博客作业-结对项目
    第9次作业--接口及接口回调
    第八次作业--继承
  • 原文地址:https://www.cnblogs.com/huzi007/p/5175693.html
Copyright © 2011-2022 走看看