2014-12-14 4 views
0

Как я могу реализовать интерфейс только в некоторых случаях?Внедрение интерфейса в зависимости от текущего API

Скажем, у нас есть int sdkVersion и только если его значение выше 10, то существует интерфейс TenPlusInterface.

Для кода методов, я мог бы просто проверить и сказать:

if (sdkVersion > 10) { 
    ClassForApiTen cls = new ClassForApiTen(); 
    ... 
} 

Но если бы мой sdkVersion < 10, я не могу сделать public class MyClass implements TenPlusInterface. Итак, что было бы рекомендуемым способом реализации интерфейса только в определенных случаях?

ответ

2

Имейте подкласс своего класса, и этот подкласс реализует интерфейс.

public class MyClass { ... } 

public class TenPlusMyClass extends MyClass implements TenPlusInterface {} 

public class MyClassFactory { 
    MyClass getMyClass(int sdkVersion) { 
     return sdkVersion > 10 ? new TenPlusMyClass() : new MyClass(); 
    } 
} 
+0

Отлично, спасибо! (И я узнал о защищенном префиксе, я никогда раньше не использовал его ;-)) –

0

Создать абстрактный класс. И исходя из условия I.e.> 10 или < 10, вы можете написать анонимный внутренний класс.

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