先描述下问题场景:接口地址中父类地址为可变地址,修改父类地址后发现接口地址未曾改变。:
public class Init {
private static String baseUrl = "http://www.baidu.com";
//
public static void init(String url) {
baseUrl = url;
}
public static String getUrl() {
return baseUrl;
}
public static String login = baseUrl + "/login";
}
public class Test{
public static void main(String[] args) {
//修改请求头部
Init.init("http://ssss.com");
Log.i("xiaozi","baseUrl:"+ Init.getUrl());
Log.i("xiaozi","login地址:"+ Init.login);
}
}
打印结果如下:
这边经过研究发现,其实在加载Init类的时候静态变量login已经被赋予了值,所以在Test类中调用的时候这边拿到的只是初始化的值。或者换个更简单的理解方式
把 baseUrl+"/login" 这块看成一个整体,它就是一个静态变量,在类加载时已经赋予了其值,所以以后每次调用它一直没有变。
解决这个问题其实也很简单,就是把单独baseUrl摘出来,在网络请求时再调用baseUrl 然后字符串拼接"/login"就行了。