• JAVA进阶-泛型


    >泛型:泛型指代了參数的类型化类型,一般被用在接口。类。方法中
    >作用:用来确定參数的范围,在书写代码的时候提前检查代码的错误性
    >泛型的声明,下面给出类声明,依此类推:
    class ClassName<T>{}
    class ClassName<K,V,O>{}



    >通用符:<?>一般指定全部的类
    >限定符:<T exteds 超类>
    1)限定符字母仅仅能被限定一次
    2)当extends的时候仅仅能使用大写字母,当super的时候仅仅能使用"?"
    3)在类中不能使用super限定符号。
    4)在类中的限定符能被方法继续使用。
    5)接口中声明时有限定符号,其子类也必须有。


    class Book<T extends Number>{

    void go(Stack<T> stack){


    }


    public void go2(Stack<?

    super Number> stack2){

    }
    }


    1.參数转换>
    声明:
    class Book<T extends Number>{}
    引用:
    Book<Number> numBook=new Book<Number>();
    Book<Integer> numBook2=new Book<Integer>();
    // 同一层级上的參数显式或者隐式的转换都是错误的
    // numBook=(Book<Number>)numBook2;

    2.比較和赋值:
    声明:
    class CompareClass<T>{
    T a;
    CompareClass(T t){
    this.a=t;
    }
    }

    比較:
    CompareClass<Float> f=new CompareClass<Float>();
    CompareClass<Integer> i=new CompareClass<Integer>();

    f==i?这样的结果会产生编译错误;
    赋值:
    f=i;?相同也会产生编译错误。


    2.类型參数数组>
    声明:
    T[] t;
    定义:
    T[] t=new int[10];//编译错误
    改动:
    T[] t;
    int[] in=new int[]{10,20};
    t=in;



    3.类型參数静态使用>因为类型參数仅仅有在实例化的时候才确定类型,因此
    例如以下的代码。把类型參数作为静态变量将会引发编译错误;
    class Person<K,V>{

    static K name;
    static V age;
    static V getName(){
    return age;
    }

    }



  • 相关阅读:
    常用的Dos命令
    关于CSS3
    数据渲染
    jQuery中的AJAX
    AJAX
    面向对象3
    克隆对象、对象继承
    面向对象2
    面向对象1
    面向对象
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/7100310.html
Copyright © 2020-2023  润新知