zoukankan      html  css  js  c++  java
  • 核心类库_泛型

    概述

      泛型,即“参数化类型”。就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

    使用

    • 泛型类
     1 //定义一个泛型类: 
     2 public class ClassName<T>{ 
     3     private T data; 
     4 
     5     public T getData() { 
     6         return data; 
     7     }
     8    
     9     public void setData(T data) { 
    10         this.data = data; 
    11     } 
    12 }
    • 泛型接口
    1 public interface IntercaceName<T>{ 
    2     T getData(); 
    3 }
    实现接口时,可以选择指定泛型类型,也可以选择不指定, 如下:
    指定类型:
    1 public class Interface1 implements IntercaceName<String> { 
    2     private String text; 
    3     @Override 
    4     public String getData() { 
    5         return text; 
    6     } 
    7 }
    不指定类型:
    1 public class Interface1<T> implements IntercaceName<T> { 
    2     private T data; 
    3     @Override 
    4     public T getData() { 
    5         return data; 
    6     } 
    7 }
    • 泛型方法
    1 private static <T> T 方法名(T a, T b) {}
    • 泛型限制类型
      在使用泛型时, 可以指定泛型的限定区域 ,
        - 例如: 必须是某某类的子类或 某某接口的实现类,格式:
        
    1 <T extends 类或接口1 & 接口2>
    • 泛型中的通配符 ?
    类型通配符是使用?代替方法具体的类型实参。
    1   <? extends Parent> 指定了泛型类型的上届
    2   <? super Child> 指定了泛型类型的下届
    3   <?> 指定了没有限制的泛型类型

    作用

    1、 提高代码复用率
    2、 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

    注意

    在编译之后程序会采取去泛型化的措施。
    也就是说Java中的泛型,只在编译阶段有效。
    在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加
    类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。
  • 相关阅读:
    Makefile 跟着走快点
    MariaDB 复合语句和优化套路
    Unity Shader常用函数,标签,指令,宏总结(持续更新)
    ThreadLocal 简述
    Java全排列排序
    Thrift入门
    Nginx + Keepalived 双机热备
    Linux 虚拟IP
    Java 反编译
    Spring拦截器
  • 原文地址:https://www.cnblogs.com/zhangzhongkun/p/14408944.html
Copyright © 2011-2022 走看看