2015-12-08 51 views
1

在我的情況,我有使用Cache_Categories()方法很多地方,但有些時候不需要重寫After_Success()方法是不覆蓋After_Success()方法可以調用的方法,無需重載接口參數空

接口:

public interface Web_Service 
    { 
     public void After_Success(); 
    } 

方法:

public static void Cache_Categories(Web_Service i) 
    { 
    i.After_Success(); 
    } 

致電: 通常

new App_Methods().Cache_Categories(this, false, new App_Methods.Web_Service() 
     { 
      @Override 
      public void After_Success() 
      { 

      } 
     }); 

通緝:

new App_Methods().Cache_Categories(this, false,null); 
+0

java-8有能力做到這一點。請遵循java-8特性的默認方法。 –

回答

2

只是檢查,如果web服務爲空,不調用它的方法。

0

將接口更改爲抽象類。

public abstract class Web_Service 
{ 
    public abstract void after_Success(); 
} 
+0

和方法名稱應以小寫字母開頭 –

0

我,你可以使用Java 8,那麼你可以在這種情況下,改變

public static void Cache_Categories(SomeType type, Boolean b, Web_Service i) 
    { 
     i.After_Success(); 
    } 

public static void Cache_Categories(SomeType type, Boolean b, Optional<Web_Service> i) 
    { 
     i.ifPresent(Web_Service::After_Success); 
    } 

您只要致電:

new App_Methods().Cache_Categories(this, false, Optional.ofNullable(ws)); 

ws可能參數,局部var,obj等屬性,可能爲空。