Java泛型--泛型接口


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 

*/
相關文章
相關標籤/搜索