Я хотел бы рассмотреть возможность использования Class.forName
для загрузки соответствующего кода в зависимости от того, поддерживает ли устройство WMA 2 или нет
class SpecificFeatureFactory {
SpecificFeature get(boolean isWma2) {
return (SpecificFeature)Class.forName(isWma2 ? "Rich" : "Poor");
}
}
class Rich implements SpecificFeature {
@Override
long doSomething(String className, Date dateAlarm) throws Exception {
return PushRegistry.registerAlarm(className, dateAlarm);
}
}
class Poor implements SpecificFeature {
@Override
long doSomething(String className, Date dateAlarm) throws Exception {
return -1;
}
}
interface SpecificFeature {
long doSomething(String className, Date dateAlarm) throws Exception;
}
Согласно моим воспоминаниям, спецификация WMA описывает, как приложение может определить, является ли оно 1.1
или 2.0
.