• 定义泛型接口


    我想是你没表述清楚吧!是定义泛型接口吧!
    定义泛型接口的好处:
    a.减少了对对象进行装箱和拆箱所导致的性能成本,提高了效率。
    b.赋予了代码更强的类型安全。
    c.实现了更为灵活的代码复用。


    其实就是泛型的好处了,如果不用泛型,那么就得用object了,这样有什么缺点呢?
    1,如果对象是值类型,那么就有拆箱,装箱了,效率很低;
    2,object,可读性很低,如果用泛型,我们可以直接看到对象是int,string或是char,可读性很强。

    我就想到这两点了,其他的可以搜索下泛型的优点就是了。

    JDK1.5之后的List接口,Iterator接口,Map接口的代码:

    public interfaceList<E>

    {

    voidadd(E x);

    Iterator<E> iterator();

    }

    public interfaceIterator<E>

    {

    E next();

    Boolean hasNext();

    }

    Public interfaceMap<K,V>

    {

    Set<K> keyset();

    V put(K key, V value);

    }

    上面三个接口声明比较简单,除了尖括号中的内容――这就是泛型的实质;允许在定义接口,类时指定类型形参,类型形参在整个接口,类体内中可当作类型使用,几乎所有可使用其他普通类型的地方都可以使用这种类型形参。

    例如我们使用List类型时,为E形参传入String类型实参,则产生了一个新的类型: List<String>类型,我们可以把List<String>想像成E杯全部替换成String的特殊List子接口:

    Public interfaceListString extends List

    {

    Voidadd(String x);

    Iterator<String> iterator();

    }

    虽然程序只定义了一个List<E>接口,但实际使用时可以产生无数多个List接口,只要为E传入不同的类型实参,系统就会多出一个新的List子接口。

    public class Apple<T> {

    private T info;

    public Apple(){}

    public Apple(T info){

    this.info =info;

    }

    public void setInfo(T info){

    this.info =info;

    }

    public T getInfo(){

    return this.info;

    }

    public static void main(String[] args){

    Apple<String> a1 = new Apple<String>("Apple");

    System.out.println(a1.getInfo());

    Apple<Double> a2 = new Apple<Double>(2.00);

    System.out.println(a2.getInfo());

    }

    }

    Output:

    Apple

    2.0

    上面定义了一个带泛型声明的Apple<T>类,实际使用时会为T形参传入实际类型。

  • 相关阅读:
    Fegin参数使用总结
    navicat彻底卸载
    VM虚拟机win10无法联网,DNS配置问题
    Navicat15的安装及破解
    Docker 配置国内镜像源拉取prometheus,解决prometheus拉取特别慢的问题
    python中faker(生成随机数据)
    初探移动网站的架构和设计
    利用HTML5的一个重要特性 —— DeviceOrientation来实现手机网站上的摇一摇功能
    响应式Web设计(三):响应式Web设计的方法
    响应式Web设计(四):响应式Web设计的优化
  • 原文地址:https://www.cnblogs.com/beautiful-code/p/5271280.html
Copyright © 2020-2023  润新知