Javase之集合泛型

集合泛型知识

泛型

是一种把类型明确工作推迟到创建对象或者调用方法的时候才明确的特殊类型。

也称参数化类型,把类型当成参数传递。

在jdk1.5中出现。一般来说经常在集合中使用。

  • 格式

    <数据类型>

    此处的数据类型只能是引用类型

  • 好处

    1.把运行期间的问题提前到编译时期。

    2.避免了强制类型转换。

    3.优化了程序,解决了警告。

  • 泛型产生原因

    早期,Java中使用Object来表示所有类型。向上转型没有问题,但是在向下转型的时候隐含了类型转换问题。

    也即是说,这样的程序是不安全的。所以在Java的JDK5以后引入了泛型,提高了程序安全性。

  • 泛型的应用

    • 泛型类

      把泛型定义在类中

      格式:public class 类名<泛型类型1,…>(表明可定义多个泛型类型,每个类型之间用逗号隔开。)

      public  class objectTool<T>{
          private T obj;
          
          public T getObj(){
              return obj;
          }
          
          public void setObj(){
              this.obj = obj;
          }
      }
      
    • 泛型方法

      把泛型定义在方法上

      格式:public <泛型类型> 返回类型 方法名(泛型类型);

      public <T> void show(T t){
              System.out.println(t);
          }
      
    • 泛型接口

      把泛型定义在接口上

      格式:public interface 接口名<泛型类型1,…>

      interface Inter<T>{
          public abstract void show(T t);
      }
      
      //实现接口
      //1.知道要用什么类型
      //class InterImpl implements Inter<String>{
      //
      //    @Override
      //    public void show(String t) {
      //        System.out.println(t);
      //    }
      //}
      
      //2.不知道要用什么类型
      class InterImpl<T> implements Inter<T>{
      
          @Override
          public void show(T t) {
              System.out.println(t);
          }
      }
      
  • 泛型高级之通配符

    泛型如果明确的写出,则前后必须一致

    class Animal {
    
    }
    
    class Dog extends Animal{
    
    }
    
    class Cat extends Animal{
        
    }
    

    • 表示任意类型,如果没有明确那么就是Object及Java任意类

      Collection<?> c1 = new ArrayList<Object>();
      Collection<?> c2 = new ArrayList<Animal>();
      Collection<?> c3 = new ArrayList<Dog>();
      Collection<?> c4 = new ArrayList<Cat>();
      

    • ?extends E

      向下限定,E及其子类

      Collection<? extends Animal> a1 = new ArrayList<Animal>();
      Collection<? extends Animal> a2 = new ArrayList<Dog>();
      Collection<? extends Animal> a3 = new ArrayList<Cat>();
      

    • ?super E

      向上限定,E及其父类

      Collection<? super Animal> b1 = new ArrayList<Animal>();
      Collection<? super Animal> b2 = new ArrayList<Object>();
      

python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
JSP基于SSM网上医院预约挂号系统毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值