Retrofit2.4.0新手求助:构造Retrofit时提示访问权限错误
Retrofit 2.4.0 构造实例报错解决办法
嘿,我刚碰到和你一模一样的问题!作为Retrofit新手用2.4.0版本时,写ApiClient可踩过这个小坑。先理清楚你的情况:
你的原始代码
public class ApiClient { public static final String BASE_URL = "https://api.coinmarketcap.com/v1/"; public static Retrofit retrofit = null; public static Retrofit getApiClient (){ if (retrofit == null){ retrofit = new Retrofit().Builder.baseUrl(BASE_URL). addConverterFactory(GsonConverterFactory.create()).build(); } return retrofit; } }
遇到的错误
is not public in 'retrofit2.Retrofit' , cannot be accessed from outside
问题原因&解决办法
其实问题就出在Retrofit.Builder的调用方式上!你写的new Retrofit().Builder是先尝试创建Retrofit实例,再访问它的Builder内部类,但Retrofit的构造方法是私有的,外部根本没法直接new Retrofit(),所以才会抛出这个访问权限错误。
正确的做法是直接调用Retrofit.Builder这个静态内部类的构造方法——把new Retrofit().Builder改成new Retrofit.Builder(),然后链式调用配置方法就可以了。
修正后的完整代码
public class ApiClient { public static final String BASE_URL = "https://api.coinmarketcap.com/v1/"; public static Retrofit retrofit = null; public static Retrofit getApiClient (){ if (retrofit == null){ retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); } return retrofit; } }
这样改完就能正常创建Retrofit实例啦,亲测有效!
内容的提问来源于stack exchange,提问作者Hadi Ahmadi
相关产品推荐
相关产品推荐

