从零开始自学Java泛型的设计难不难?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零开始自学Java泛型的设计难不难?相关的知识,希望对你有一定的参考价值。

引言

泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。

 

泛型基础

泛型类

我们首先定义一个简单的Box类:

public class Box {

    private String object;

    public void set(String object) { this.object = object; }

    public String get() { return object; }

}

这是最常见的做法,这样做的一个坏处是Box里面现在只能装入String类型的元素,今后如果我们需要装入Integer等其他类型的元素,还必须要另外重写一个Box,代码得不到复用,使用泛型可以很好的解决这个问题。

public class Box<T> {

    // T stands for "Type"

    private T t;

    public void set(T t) { this.t = t; }

    public T get() { return t; }

}

这样我们的 Box 类便可以得到复用,我们可以将T替换成任何我们想要的类型:

Box<Integer> integerBox = new Box<Integer>();

Box<Double> doubleBox = new Box<Double>();

Box<String> stringBox = new Box<String>();

泛型方法

看完了泛型类,接下来我们来了解一下泛型方法。声明一个泛型方法很简单,只要在返回类型前面加上一个类似 <K, V> 的形式就行了:

public class Util {

    public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) {

        return p1.getKey().equals(p2.getKey()) &&

               p1.getValue().equals(p2.getValue());

    }

}

public class Pair<K, V> {

    private K key;

    private V value;

    public Pair(K key, V value) {

        this.key = key;

        this.value = value;

    }

    public void setKey(K key) { this.key = key; }

    public void setValue(V value) { this.value = value; }

    public K getKey()   { return key; }

    public V getValue() { return value; }

}

【内容展示有限,可以加群下载,群文件会定期更新学习资料,以及练手小案例】
【Java技术交流08群】 群号156643771

技术分享


以上是关于从零开始自学Java泛型的设计难不难?的主要内容,如果未能解决你的问题,请参考以下文章

从零开始的Java开发1-6-2 泛型:概述泛型作为方法参数自定义泛型自定义泛型方法

从零开始学习hadoop之发行版选择

Java泛型

从零开始学习javajava基础语法

Java泛型详解(转)

从零开始学Axure原型设计(入门篇)