Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java编译时接口更改_Java_Android - Fatal编程技术网

Java编译时接口更改

Java编译时接口更改,java,android,Java,Android,我是Java新手,继承了现有的android应用程序。最初的开发人员选择使用常量接口 我的问题是,我需要更改其中的一些常量来编译应用程序以用于生产与开发。如果我手动修改一些值,一切都会正常工作,但这只是一种丑陋的处理方式,我可能有一天会犯错误 因此,我的目标是找到一个对代码其余部分透明的解决方案,并使用单个常量在开发和生产之间来回切换 现有代码示例: package package.common; public interface Consts { // Define the Buil

我是Java新手,继承了现有的android应用程序。最初的开发人员选择使用常量接口

我的问题是,我需要更改其中的一些常量来编译应用程序以用于生产与开发。如果我手动修改一些值,一切都会正常工作,但这只是一种丑陋的处理方式,我可能有一天会犯错误

因此,我的目标是找到一个对代码其余部分透明的解决方案,并使用单个常量在开发和生产之间来回切换

现有代码示例:

package package.common;
public interface Consts {

    // Define the Build Type
    boolean PRODUCTION_BUILD = false;

    String BASE_URL   = "https://domain.com/Dev/Mobile.ashx";

    interface RSA {
        String PUBLIC_KEY_SHA1 = "....";
    }

}
像这样使用

import package.common.Consts;

public class HttpsConn extends NetConnection {

    String url = Consts.BASE_URL;

}

有没有办法在编译时使用常量修改这个接口?或者,我必须咬紧牙关,修改使用此接口作为解决方案一部分的代码吗?

否,但您可以在
常量中编写此代码

boolean PRODUCTION_BUILD = false;
String BASE_URL = PRODUCTION_BUILD ? "..." : "...";

这说明了使用接口(并实际使用,而不仅仅是将常量放入)的许多原因之一。如果将代码更改为使用返回所需值的方法,而不是直接向上的常量,则可以简单地定义
Consts
接口的两个实现:一个用于dev,另一个用于prod。