• java泛型学习(1)


    java泛型(Generices Type)

       --->概念:泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。

     --->优点:(1)在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常【ClassCastException】,这是一个安全隐患。

          (2)泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动隐式的,提高代码的重用率。
    Map m = new HashMap();
    m.put("key", "blarg");
    String s = (String) m.get("key");//需要进行显示的强制类型转换
    View Cod
     泛型字母
    T  type表示类型
    K V 分别代表键值对中的key,value
    E 代表Element
    ?不确定类型
    【泛型类】
    泛型只能使用引用类型。
     1 /**
     2  * 
     3 ----->声明类时使用泛型
     4 ----->泛型不只能使用引用类型
     5 ----->泛型声明时不能使用在静态属性,静态方法上
     6  */
     7 public class Student<T1, T2> {
     8     private T1 javase;
     9     private T2 oracle;
    10     //private static T2 add;会报错的
    11     public Student() {
    12         super();
    13     }
    14     public Student(T1 javase, T2 oracle) {
    15         super();
    16         this.javase = javase;
    17         this.oracle = oracle;
    18     }
    19 
    20     public T1 getJavase() {
    21         return javase;
    22     }
    23 
    24     public void setJavase(T1 javase) {
    25         this.javase = javase;
    26     }
    27 
    28     public T2 getOracle() {
    29         return oracle;
    30     }
    31 
    32     public void setOracle(T2 oracle) {
    33         this.oracle = oracle;
    34     }
    35 
    36 }
    View Code

    【泛型接口】

    1 /**
    2  *(接口中只能定义静态全局变量,抽象方法)
    3    接口中泛型字母只能使用在方法中,不能使用在全局常量中
    4 
    5  */
    6 public interface Person<T,T2> {
    7     public abstract void Address(T a);
    8     public  abstract T2 queryAll();
    9 }
    View Code

    【泛型方法】

     1 /**
     2      * 
     3     *格式----->修饰符 泛型字母 返回值类型 方法名(泛型字母 形参)
     4     *(只能访问对象信息,不能修改对象信息)
     5     ---><T>用在返回值类型
     6     --->也可以用在形参列表上
     7      */
     8     public  <T> void queryList(T a){
     9       
    10         System.out.println("Student.queryList()"+a);
    11     }
    View Code
  • 相关阅读:
    [BFS][51nod]1649 齐头并进
    [最短路] [洛谷] P1629 邮递员送信
    [HDUOJ] 1233 还是畅通工程
    [HDUOJ] 1873 看病要排队
    [树直径] [POJ] CowMarathon
    [暴搜] 树直径
    [模板] 最小生成树
    [洛谷] P1276 校门外的树(增强版)
    1140 Look-and-say Sequence (20 分)
    string与char数组互相转换(一)
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/3837977.html
Copyright © 2020-2023  润新知