2017-07-29 188 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

相關問題