是否可以检测是否是第一次调用流畅的接口?

Is it possible to detect if fluent interface was called for the first time?

假设我有一个 class:

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() 的内容?

你可以这样做:

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