zoukankan      html  css  js  c++  java
  • 泛型入门

    java集合有个缺点——将一个对象放进集合之后,该对象的编译类型就会变成Object类型(其运行时类型不变)编译时不检查对象的类型。

    泛型概念:java的参数化类型,即在创建集合时指定集合元素的类型。

    如,List<String> strList=new ArrayList<String>();  后面的String可省略不写

    strList.add(5);   会引起编译错误,因为已经指定strList 集合存放的数据类型为String类型了,不能存放其他类型的对象。输出时不用强制类型转换。

    泛型实质:允许在定义接口、类和方法时使用类型形参,类型形参将在声明变量、创建对象和调用方法时动态的指定。

     1 public class Apple<T> {
     2     private T info;
     3     public Apple(){    
     4     }    // 构造器名依然为Apple,而不是Apple<T>
     5     public  Apple(T info){
     6         this.info=info;    
     7     }
     8 
     9     public static void main(String[] args) {
    10         Apple<String> a1=new Apple<>("苹果");
    11         System.out.println(a1.info);
    12         Apple<Double> a2=new Apple<>(23.56);
    13         System.out.println(a2.info);
    14     }
    15 
    16 }

    从泛型类派生子类

     可以从带泛型声明的接口、类中创建其实现类或继承类,此时使用这些接口或类时不能包含类型形参

    public class A extends Apple<T>{}    此处为错误写法

    public class A extends Apple<String>{}  此处为正确写法   

    public class A extends Apple    使用类或接口时也可以不形参传入实参

    调用方法是必须为所有的数据形参出入参数值。

    不能在静态方法、静态变量和静态代码块的声明和初始化中使用类型参数。

    public class B<T> {
        static T t1;
        public static void study(T t1){    
        }
    }
  • 相关阅读:
    精彩回顾 | Serverless Developer Meetup 12.04 深圳站
    Dubbo3 Triple 协议简介与选型思考
    阿里云 FaaS 架构设计与创新实践
    KubeDL 0.4.0 Kubernetes AI 模型版本管理与追踪
    shell脚本awk的用法
    case用法ping命令脚本(工作中常用的)
    linux时间与internet时间同步
    bootStrap表单验证插件的使用
    状态模式之观察者模式
    20211125
  • 原文地址:https://www.cnblogs.com/peng111/p/5648436.html
Copyright © 2011-2022 走看看