2015-12-08 2 views
1

В моем случае я должен использовать Cache_Categories() Method много мест, но некоторое время не нужно переопределить 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

Просто проверьте, если WebService является недействительным и не называют это метод.

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 ect и может быть нулевым.

Смежные вопросы