泛型也可以应用与接口上.例如生成器(Generator),这是一种专门负责创建对象的类,这种生成器无需额外的信息就知道如何创建新的对象,接口如下:
/**
*泛型接口
*
*/
public interface Generator {
T create();
}
/**
*泛型接口实现---斐波那契数列
*
*/
class Fabonacci implements Generator{
//位置
private int count = 0;
//产生fabonacci数的核心代码
private int fab(int n){
if(n
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
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
*/