2017-07-29 64 views
0

比方说,我有一个类:是否有可能检测流利接口是否第一次被调用?

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()

回答

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 
+0

哇:d我还以为我梦见过深。好一个。 – xinaiz

相关问题