【问题标题】:I don't understand the reason this code is not infinity recursive我不明白这段代码不是无限递归的原因
【发布时间】:2017-09-15 15:55:10
【问题描述】:

我是 Retrofit2 的新手。我在阅读this site时有一个问题。
为什么ServiceGenerator中的the createService method不是无限递归的?

public static <S> S createService(
        Class<S> serviceClass, String username, String password) {
    if (!TextUtils.isEmpty(username)
            && !TextUtils.isEmpty(password)) {
        String authToken = Credentials.basic(username, password);
        return createService(serviceClass, authToken);
    }

    return createService(serviceClass, null, null);
}

【问题讨论】:

  • 也许你可以不做//omitted,而只是给我们看实际的代码?
  • 可能是因为 TextUtils.isEmpty(null) 的计算结果为 false,并且在“第二次”传递中调用了第一个返回语句...
  • @Gotiasits No. TextUtils.isEmpty(null) 返回 true。
  • 这实际上看起来像是他们的代码中的错误。

标签: java android retrofit2


【解决方案1】:

由于多态性,它不是无限递归的。有三个不同的 createService 方法,每个方法都有不同的签名。因此,如果密码和用户都不为空,他们会使用签名 (serviceClass, authToken) 转到不同的 createService。

【讨论】:

    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 2020-03-02
    • 2012-01-18
    • 2021-11-03
    • 2021-12-19
    • 1970-01-01
    • 2020-04-16
    • 2017-06-14
    相关资源
    最近更新 更多