• 泛型(Java 5 开始)


    前言

    Java 5 开始之前,从集合读取的数据都必须进行类型转换,如果插入错误的数据就会报错。
    
    有了泛型,编译器会自动为你的插入进行转换,并在插入时告知是否插入了类型错误的对象。
    
    
    将类型由原来的具体的类型参数化(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。
    
    泛型只在编译阶段有效(泛型擦除)。
    
    泛型有三种使用方式,分别为:泛型类、泛型接口、泛型方法。
    

    分类

    泛型类:
    	public class Generic<T>	//最典型的就是各种容器类,如:List、Set、Map。
    
    泛型接口:
    	public interface Generator<T>	//泛型接口常被用在各种类的生产器中
    
    泛型方法:
    	public <T,K> K showKeyName(Generic<T> container)	//<T,K>必不可少,表明这是一个泛型方法
    
    	注:如果在泛型类中定义使用静态泛型方法,需要在静态泛型方法上添加额外的泛型声明,
    	    即使静态方法要使用泛型类中已经声明过的泛型也不可以。
    
    泛型上下边界(参数化类型是不可变的,所有需要泛型通配符):
    
    	Generic<?> obj    //可以接受任何类型作为泛型传入
    
    	Generic<? extends Number> obj    //只能传入number的子类或者number
    
    	Generic<? super Integer> obj    //只能传入Integer的父类或者Integer
    

    面试汇总

    泛型的作用:
    	在集合中存储对象并在使用前进行类型转换不方便。
    	泛型防止了那种情况的发生。
    	它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCastException。
    
    
    Java的泛型是如何工作的?什么是类型擦除:
    
    	有了泛型,编译器会自动为你的插入进行转换,并在插入时告知是否插入了类型错误的对象。
    
    	泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。
    	例如 List 在运行时仅用一个 List 来表示。这样做的目的是确保能和 Java 5 之前的版本开发二进制类库进行兼容。
    	你无法在运行时访问到类型参数。
    	擦除使泛型可以与没有使用泛型的代码随意互用。
    
  • 相关阅读:
    德国10马克,高斯正态分布函数
    安装python的第三方库 geopandas
    Python版本的GDAL 安装
    [原创]App崩溃率统计工具推荐
    用户增长模型AARRR模型
    [原创]nginx日志分析工具
    [原创]浅谈移动互联网创业公司工具类产品
    [原创]浅谈在创业公司对PMF的理解
    [原创]浅谈创业公司如何选择产品方向
    [原创]浅谈在创业公司对MVP的理解
  • 原文地址:https://www.cnblogs.com/loveer/p/11805719.html
Copyright © 2020-2023  润新知