Java泛型--目錄
java
泛型也能夠應用與接口上.例如生成器(Generator),這是一種專門負責建立對象的類,這種生成器無需額外的信息就知道如何建立新的對象,接口以下:ide
/** *泛型接口 * */ public interface Generator<T> { T create(); } /** *泛型接口實現---斐波那契數列 * */ class Fabonacci implements Generator<Integer>{ //位置 private int count = 0; //產生fabonacci數的核心代碼 private int fab(int n){ if(n < 2){ return 1; }else{ return fab(n - 1) + fab(n - 2); } } //泛型接口:生成器 @Override public Integer create() { return fab(count++); } public static void main(String[] args) { Fabonacci fabonacci = new Fabonacci(); for(int i = 0; i < 10; i++){ System.out.printf(fabonacci.create() + " "); } } } /*輸出結果: 1 1 2 3 5 8 13 21 34 55 */
進一步咱們可能會想到iterable接口,咱們能夠重構這個類,建立一個適配器來實現所須要的接口(這裏經過繼承建立適配器):this
class IteratorFabonacci extends Fabonacci implements Iterable<Integer> { private int size; public IteratorFabonacci(int size) { this.size = size; } public Iterator<Integer> iterator() { return new Iterator<Integer>() { @Override public boolean hasNext() { return size > 0; } @Override public Integer next() { size--; return create(); } @Override public void remove() { throw new UnsupportedOperationException(); } }; } public static void main(String[] args) { IteratorFabonacci iteratorF = new IteratorFabonacci(10); for (int number : iteratorF) { System.out.printf(number + " "); } } } /*輸出結果: 1 1 2 3 5 8 13 21 34 55 */