是否有可能检测到第一次是否调用了流畅的界面?

时间:2017-07-29 20:02:27

标签: java fluent-interface

假设我有一个班级:

class A {
    public A fun() {
        System.out.println("a");
        return this;
    }   
}

一个场景:

A a = new A();
a.fun().fun().fun().fun();
a.fun().fun();

是否有可能在每次有序呼叫的第一次呼叫中打印其他消息而不添加.start() / .finalize()之类的内容?

1 个答案:

答案 0 :(得分:4)

你可以这样做:

public class A {

    public A fun() {
        System.out.println("A");
        return new AA();
    }

    private class AA extends A {
        @Override
        public A fun() {
            System.out.println("AA");
            return this;
        }
    }

    public static void main(String[] args) {
        A a = new A();
        a.fun();
        a.fun().fun();
        a.fun().fun().fun();
    }
}

输出:

A
A
AA
A
AA
AA