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

  • 相关阅读:
    谁知道怎么获得客户端的语系,不是encoding哦
    如何动态控制弹出窗体的大小
    维权成功!
    KFC的mm在练习做圣代
    CICD自动化发版系统设计简介
    java IO (File类)
    StringBuffer
    Arrays和比较器
    java正则
    Math和Random类
  • 原文地址:https://www.cnblogs.com/dedema/p/10821660.html
Copyright © 2011-2022 走看看