您的位置:首页 > Web前端

Effective Java(数组和泛型的实现方式、用无限制的通配符提高API的灵活性)

2017-09-25 15:57 453 查看

1、数组和泛型的实现方式

引用书中的话“一般来说,将集合声明参数化,以及使用JDK所提供的泛型和泛型方法,这些都不太困难。编写自己的泛型会比较困难一些,但是值得花些时间去学习如何编写”。

  举一个简单例子来帮助我们如何正确编写泛型:

/**
* Created by zzy on 2017/9/24/0017.
*/
public class Test<E> {
private E[] elements;

public Test() {
//elements = new E[16];    //编译时出错,不能创建不可具体化的类型的数组
elements = (E[]) new Object[16];//E[]实行类型强制转换,返回的是一个数组
}
}


还有另外一种方法:

/**
* Created by zzy on 2017/09/24/0017.
*/
public class Test<E> {
private Object[] elements;

public Test() {
//elements = new E[16];    //编译时出错,不能创建不可具体化的类型的数组
elements = new Object[16];
}

public E test() {
return (E) elements[0];//用E实行类型强制转换,返回的是数组中的一个元素
}
}


 当在编写不可避免要使用数组时,可参考以上两种数组和泛型的实现方式。

 

2、优先考虑泛型方法

泛型方法即在定义方法的返回值前加上,例如Collections.sort方法,至于优点不再多说,一句话:能用泛型尽量用泛型。

public static <T> void sort(List<T> list, Comparator<? super T> c)


3、利用无限制的通配符提高API的灵活性

之前我们提到了
<?>
形式的无限制通配符,这里则是有限制通配符。上一条目中已经出现了有限制通配符,它一共有这么2种:

  
<? extends E>
:表示可接受E类型的子类型;

  
<? super E>
:表示可接受E类型的父类型。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  泛型
相关文章推荐