相关疑难解决方法(0)

238
推荐指数
8
解决办法
9万
查看次数

为什么Retrofit会宣传为"Type Safe"库?

我刚刚浏览了他们的主页,它说,

适用于Android和Java的类型安全的HTTP客户端

为什么Retrofit将自己宣传为Type Safe,而其他图书馆(许多其他受欢迎的图书馆)则没有?

在你回答之前......

有一个答案,同样的问题在这里.它说,

类型安全性是编程语言阻止或防止类型错误的程度.类型错误是由程序的常量,变量和方法(函数)的不同数据类型之间的差异引起的错误或不期望的程序行为,例如,将整数(int)视为浮点数(浮点数).这在静态类型语言(如Java和C)中很常见

因此,Retrofit可以防止此类错误

如果这确实是答案,那么许多库会阻止这些类型的错误,但它们都不会作为类型安全广告.那是营销吗?

我认为上述答案不充分,因为类型安全的定义尚未得到认真对待.

无论如何,还有另一篇文章定义了类型安全.他们给出了例子:

类型安全意味着编译器将在编译时验证类型,如果尝试将错误的类型分配给变量,则抛出错误.

一些简单的例子:

// Fails, Trying to put an integer in a string
String one = 1;
// Also fails.
int foo = "bar";
Run Code Online (Sandbox Code Playgroud)

这也适用于方法参数,因为您将显式类型传递给它们:

int AddTwoNumbers(int a, int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用以下方法调用:

int Sum = AddTwoNumbers(5, "5");
Run Code Online (Sandbox Code Playgroud)

根据上面的定义,它将是语言(Java),而不是特定于TypeSafe的库.

所以,我再次问,为什么Retrofit将自己宣传为类型安全库?

java android type-safety retrofit retrofit2

17
推荐指数
3
解决办法
859
查看次数

通过 Retrofit 使用响应标头作为返回对象的一部分

我正在使用 Retrofit + RxJava + GSON 来使用 REST API 进行搜索。API 的构建方式是,它返回对象列表和总结果作为响应 ( total-results) 中的标头:

@GET("search/events?eager=[competition,tv]")
    fun searchEvents(@Query("q") q: String, @Query("category") category: String, @Query("order") order: String): Single<List<Event>>
Run Code Online (Sandbox Code Playgroud)

我想返回 Single,其中 SearchResult 是:

SearchResult {
 var total: Int
var events: List<Event>
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

android gson rx-java retrofit rx-java2

3
推荐指数
1
解决办法
1972
查看次数