pul*_*ion 17 java android type-safety retrofit retrofit2
我刚刚浏览了他们的主页,它说,
适用于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 是建立在 OKHttp 之上的,它只能处理RequestBody和ResponseBody对象。Retrofit 以其使用Converters安全地将这些类型序列化为其他类型或从其他类型序列化的能力而自豪。
在安全的类型安全是指改造处理,确保正确的类型转换,同时建立所有的样板代码RequestBody和分析ResponseBody的对象。Retrofit 带有几个内置的Converters,它们环绕流行的序列化库,例如 GSon 和 Jackson。
前面提到的类型安全是 Retrofit,它负责构建 HTTP 请求并从 DTO 中解析 HTTP 响应。
您,开发人员,可以像往常一样继续使用您选择的序列化库,而不必担心您对这个问题的小脑袋。
我并没有考虑太多,但是从我开始使用Retrofit的那一刻起,我就知道这个标题在更高的抽象层比其他人在这里谈论的类型安全。
通常,无论是否类型安全,我们都将编程语言作为“目标”。而且我认为Retrofit的标题类型安全不是这种情况;)如果我们假装整个HTTP调用是一条编程语言指令(可能具有一些参数和值),那么我们确实可以说Retrofit是类型-安全...您已经严格定义了要得到什么样的结果..而您却得到了这个或什么也没有/错误。当然,错误是在运行时造成的,因为您永远无法真正知道将从互联网上检索到的内容。当然,许多其他库都可以做到这一点,不仅限于翻新。当然,您可以通过使用ResponseBody类型的返回值(可以接受任何内容)定义服务来误导Retrofit的类型安全性。但是通常情况下,开箱即用的是获取库,它将检查,解析,
我现在有一个简单的类比(就类型安全的口号而言):
最好的问候,Darek
我的猜测是因为您可以使用自定义类作为请求正文,例如
@GET("/token")
Call<Token> getToken(@Body Credentials credentials);
Run Code Online (Sandbox Code Playgroud)
并且您并不总是需要创建一个String. 当然,它将String在幕后创建,但您永远不必触摸它。
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |