java泛型

本文详细介绍了Java中的泛型,包括其在编译时期的作用、类型擦除和运行时动态类型确定。通过示例展示了泛型在集合、类和接口中的应用,强调了泛型如何提高代码效率、增强数据类型安全并减少强制类型转换。同时,讨论了泛型通配符的使用及其在解决类型兼容性问题上的作用。
摘要由CSDN通过智能技术生成

Java泛型概述

  • 泛型在Java中被称之为”JAVA类型”,简称G。泛型是JavaSE平台1.5版本增加的新特性。泛型在Java中不是一种数据类型,是一种在编译时期的特殊语法,它能够让JVM识别从而确定在应用泛型的操作中体现泛型特点,帮助程序员在开发中从泛型中获得更高效和更安全数据的管理操作。
  • 泛型由于不是一种Java的数据类型所以在运行时,JVM将使用擦除法将泛型描述还原成未应用泛型语法的规则进行执行。
  • 泛型基本语法:<T>

  • 泛型能够在代码书写过程中帮助程序员提高效率和数据类型安全
  • 泛型能够在编译阶段确定数据类型是否符合要求,规避错误发生
  • 泛型能够避免数据对象强制类型转换操作
  • 泛型也能够支持在动态下确定数据类型

集合中使用泛型

  • 集合中,使用泛型可以规范集合中存储的数据类型,遍历集合时可以免于强制类型转换
 public static void main(String[] args) {
       //使用泛型确定了集合中只能有String类型
        List<String> strs= new ArrayList<String>();
       strs.add("12");
       strs.add("tt");

       for(String str : strs){ //由于已经限定为String类型,不再使用Object类
           System.out.println(str);//不用使用强制转换
       }
    }
  • 通配符:?
代码分析:
List<Integer> intList = new ArrayList<Integer>();
List<Number> numList = intList ;//编译出错
    //Number是Integer的父类
解决方案
List<?> numList = intList;     //动态确定了数据类型
public class Test {
    public static void main(String[] args) {
       List<Integer> intList = new ArrayList<Integer>();
       List<String> numList = new ArrayList<String>();

        List<?> list = intList;
        list = numList;
    }
}

java类使用泛型

/**
 * 带泛型的java类
 * @param <T>
 */
public class Test<T> {
    private T t;
    /**
     * T为隐式类型,即不确定类型
     * 使用泛型对象
     * @param t
     * @return
     */
    public String getClassName(T t){
        return t.getClass().getName();
    }

    public static void main(String[] args) {

        Test<String> ts = new Test<String>();//确定了T为String类
        System.out.println(ts.getClassName(new String("www")));
    }
}
  • 好处是可以在调用类时,能动态确定 T 的类型,更为灵活

接口中使用泛型

public interface Base<T> {
    void save(T t);
}

public class BaseImp<T> implements Base<T>{
    @Override
    public void save(T t) {

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值