"类型安全"是什么意思?
language-agnostic computer-science programming-languages terminology type-safety
我刚刚浏览了他们的主页,它说,
适用于Android和Java的类型安全的HTTP客户端
为什么Retrofit将自己宣传为Type Safe,而其他图书馆(许多其他受欢迎的图书馆)则没有?
在你回答之前......
有一个答案,同样的问题在这里.它说,
类型安全性是编程语言阻止或防止类型错误的程度.类型错误是由程序的常量,变量和方法(函数)的不同数据类型之间的差异引起的错误或不期望的程序行为,例如,将整数(int)视为浮点数(浮点数).这在静态类型语言(如Java和C)中很常见
因此,Retrofit可以防止此类错误
如果这确实是答案,那么许多库会阻止这些类型的错误,但它们都不会作为类型安全广告.那是营销吗?
我认为上述答案不充分,因为类型安全的定义尚未得到认真对待.
无论如何,还有另一篇文章定义了类型安全.他们给出了例子:
类型安全意味着编译器将在编译时验证类型,如果尝试将错误的类型分配给变量,则抛出错误.
一些简单的例子:
Run Code Online (Sandbox Code Playgroud)// 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");
根据上面的定义,它将是语言(Java),而不是特定于TypeSafe的库.
所以,我再次问,为什么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 ×2
retrofit ×2
type-safety ×2
gson ×1
java ×1
retrofit2 ×1
rx-java ×1
rx-java2 ×1
terminology ×1