zoukankan      html  css  js  c++  java
  • 泛型

     泛型(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的父类,我们称这个形式为泛型的下限。

  • 相关阅读:
    Hyper-V中的VM如何使用Pass-through Disk
    LDF文件丢失, 如何仅用MDF文件恢复数据库呢?
    PowerShell中的一个switch的例子
    NetBiosDomainNamesEnabled与SharePoint User Profile Service Application
    在Windows Server 2008 R2上安装Exchange 2013过程中遇到的一些问题
    C语言位域精解(转)
    uniq命令 (转)
    sort命令
    curl命令(测试连接命令)
    C10K——千万级并发实现的秘密:内核不是解决方案,而是问题所在!(转)
  • 原文地址:https://www.cnblogs.com/dedema/p/10821660.html
Copyright © 2011-2022 走看看