您试图表达的概念称为条件编译。在像 C 或 C++ 这样的语言中,您可以通过组合预处理器指令和编译器标志来完成此操作。一个相当粗略的例子:
#ifdef PAID
runPaidMethod();
#else
runFreeMethod();
#endif
好,坏或无所谓,这种条件编译在Java中是不存在的。但这并不是说您尝试做的事情无法完成,您只需要以更加面向对象的方式思考。实现您所寻求的一种方法是将您的主要服务提供者定义为接口,并为付费和免费版本提供实现。就像是:
public interface UsefulService {
public void someMethod();
public void otherMethod();
}
public class BaseUsefulService {
// Common functionality here
public void otherMethod() {
}
}
public class FreeUsefulService {
public void someMethod() {
}
}
public class PaidUsefulService {
public void someMethod() {
}
}
通过这种分解,您实际上可以将应用程序的付费版本构建到一个完全独立的应用程序中(通过将其所有服务提供商放在一个单独的项目中)。