• 泛型


     泛型(generic)

        特点:

          【1】泛型允许开发者在强类型程序设计语言(java)编写代码时定义一些可变部分,这些部分在使用前必须作出指明

          【2】泛型在编译器起作用,运行时jvm察觉不到泛型的存在。

    1     泛型的擦除

          【1】泛型在运行时已经被擦除了。

    2     泛型类

          【1】当一个类中属性的数据类型不确定时,具体是什么类型由使用者来确定时,使用泛型。泛型类的形式

    public class FanClass<T> {
        private T t;
    
        public T getT() {
            return t;
        }
    
        public void setT(T t) {
            this.t = t;
        }
    
        public FanClass(T t) {
            super();
            this.t = t;
        }
    
        public FanClass() {
            super();
        }
    }

     

    3    泛型方法

          【1】当一个方法的参数类型不确定时,具体是什么类型由使用者来确定,可以考虑使用泛型方法。

          【2】泛型方法在调用时确定(指明)类型。

          【3】泛型方法在一定程度上优化了方法重载。

        public <T> void xxx(T a) {
            System.out.println(a);
        }

        【4】多个泛型类型进一步优化了方法重载。

    // 多个同类型的泛型
        /*public <A> void print(A a) {
            System.out.println(a);
        }
        public <A> void print(A a,A b) {
            System.out.println(a);
            System.out.println(b);
        }*/
        
        public <A> void print(A...a) {
            System.out.println(a);
        }

    4     泛型接口

        【1】如果接口中的方法的参数(形参、返回值)不确定时,可以考虑使用泛型接口。

    public interface FanInterface<T> {
        public void showInfo(T t);
    }
    public interface FanInterface<T> {
        public void showInfo(T t);
    }

       【2】实现类能确定泛型接口的类型

    public class ImplClass implements FanInterface<String>{
    
        @Override
        public void showInfo(String t) {
            // TODO Auto-generated method stub
            
        }
    }

       【3】实现类不能确定泛型接口的类型->继续泛。

    public class ImplClass2<T> implements FanInterface<T>{
    
        @Override
        public void showInfo(T t) {
            
        }
    }

    4     泛型的上限和下限

        【1】泛型的上限ArrayList(? extends Pet) list 声明了一个容器,容器中的元素类型一定要继承于Pet,我们称这种形式叫做泛型的上限。

        【2】泛型的下限ArrayList(? super Pet) list 声明了一个容器,容器中的元素类型一定要是Pet的父类,我们称这个形式为泛型的下限。

  • 相关阅读:
    14 微服务电商【黑马乐优商城】:day06-使用nginx反向代理并掌握cors解决跨域
    Docker容器化【Docker安装与启动&Docker镜像与容器相关命令】
    [LeetCode]Palindrome Number 验证回文数
    C++结构体定义构造函数
    C++中explicit关键字的使用
    C++ const关键字
    图像梯度(Image Gradient)
    ORB特征点匹配
    c++:internal compiler error:killked(program cclplus) 解决办法
    最小二乘通俗解释
  • 原文地址:https://www.cnblogs.com/dedema/p/10821660.html
Copyright © 2020-2023  润新知