比较好用的 接口

来源:互联网 发布:淘宝茶叶属于什么类目 编辑:程序博客网 时间:2024/04/28 18:11

eg:


package com.org.max.test;interface Generator<T> {    T next();}class Fibonacci implements Generator<Integer> {    private int count=0;    @Override    public Integer next() {        return fib(count++);    }    private int fib(int n) {        if(n<2)            return 1;        else            return fib(n-1)+fib(n-2);    }}public class Test {    public static void main(String[] args) {        Fibonacci fibonacci = new Fibonacci();       for(int i=1;i<18;i++){           System.out.println(fibonacci.next());       }    }}



这是think of java 比较 好的一段代码, p 360


他是将保留一个刘的全局变量  count  然后每一次,调用同一个count ,



package com.org.max.test;import java.util.Iterator;interface Generator<T> {    T next();}class Fibonacci implements Generator<Integer> {    private int count=0;    @Override    public Integer next() {        return fib(count++);    }    private int fib(int n) {        if(n<2)            return 1;        else            return fib(n-1)+fib(n-2);    }}class IterableFibonacci extends Fibonacci implements Iterable<Integer>{    private int i;    public IterableFibonacci(int i) {        this.i = i;    }    @Override    public Iterator<Integer> iterator() {        return new Iterator<Integer>() {            @Override            public boolean hasNext() {                return i>0;            }            @Override            public Integer next() {                i--;                return IterableFibonacci.this.next();            }        };    }}public class Test {    public static void main(String[] args) {        for(int temp:new IterableFibonacci(18))            System.out.println(temp);       }}
当对象实现 Iteraable 接口时,并且重写Iterable 方法,

    for(int temp:new IterableFibonacci(18))
构造放回对象索引

间接调用 next() 方法


原创粉丝点击