泛型也可以应用与接口上.例如生成器(Generator),这是一种专门负责创建对象的类,这种生成器无需额外的信息就知道如何创建新的对象,接口如下:
/***泛型接口**/public interface Generator{ T create();}/***泛型接口实现---斐波那契数列**/class Fabonacci implements Generator { //位置 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接口,我们可以重构这个类,创建一个适配器来实现所需要的接口(这里通过继承创建适配器):
class IteratorFabonacci extends Fabonacci implements Iterable{ private int size; public IteratorFabonacci(int size) { this.size = size; } public Iterator iterator() { return new Iterator () { @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 */