1、开始使用这个包时候不习惯,觉得api用起来很别扭,不管是Request okhttpClient formBody只要是设置啥,就必须使用类里面的Builder类,然后一个方法接受一个参数,不停地调用每一个方法来接受一个参数进行属性设置,之前的py requests都是一个方法接受完各种参数就了事了。

2、OkHttpClient类两个构造方法。默认构造方法调用下面的有参构造方法,可以传一个构造好的Builder的实例到OkHttpClient类进行实例化。

但一般是OkHttpClient.Builder().funa(xx).funb(yy).func(zz).build()的方式来得到一个OkHttpClient.类型的实例。

Builder类是OkHttpClient类里面的一个静态类,所以才能用OkHttpClient.Builder()这种方式,然后就是用Bulider类里面的方法进行各种设置了。能连续的进行.funa(xx).funb(yy).func(zz)这种链式操作,是他在设置属性后,还返回了自身(this)。进行了OkHttpClient.Builder().funa(xx).funb(yy).func(zz)这一系列操作后得到的是一个Bulider类的实例,这还不是OkHttpClient类的实例。最后执行builder实例的buid()方法,把自身传到OkHttpClient的构造方法了,这才得到的是OkHttpClient的实例。

3、okhttp这个包里面的各个类基本都是有个类中类Builder,然后调用Bulider的各种方法进行设置,最后执行build,把builder实例自身传到Builder的上级类的构造方法。只有大致搞清楚了才能好好的调用他的api,不然会不知道到了哪一步得到的是什么类型的实例了,和为什么可以连续链式操作。

Bulider类

java okhttp包的类特点的更多相关文章

  1. java io包File类

    1.java io包File类, Java.io.File(File用于管理文件或目录: 所属套件:java.io)1)File对象,你只需在代码层次创建File对象,而不必关心计算机上真正是否存在对 ...

  2. Java中包、类、方法、属性、常量的命名规则

    1:包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:将公司域名反转作为包名.比如www.baidu.com 对于包名:每个字母都需要小写.比如:com.ba ...

  3. java.time包常用类API学习记录

    Java8出来已那么多年了,java.time包之前一直没有使用过,最近正好有用到,在此做个记录. 上图列出了java.time包下的类,接下来我们详细看下其中每个类的用法. Clock:获取到当前时 ...

  4. 利用“Java同包同名类执行顺序”取消Java 网站应用程序Licence验证

    如果是在tomcat里运行,lib目录下一大堆的JAR包,不同的JAR包里可能会有相同的包名类名,JRE按照JAR名字的字母顺序加载JAR文件,同名类如果已加载,则后面的同名类会忽略. 公司购买的一款 ...

  5. java中包命名常见规则

    做java的都知道java的包.类.接口.枚举.方法.常量.变量等等模型都有一套约定的命名规则! 学习每一种语言都应该学习对应语法和命名规则,以保持一个良好的编码风格.一来显示自己的专业.二来方便阅读 ...

  6. Java中关于日期类那些方法

                                                                       转载请注明出处http://blog.csdn.net/harry ...

  7. Android 学习第16课,java 包、类等相关的一些基础知识

    1.建议将类放在包中,不要使用无名包 2.建议包名都用小写单词组成,不要用大写 3.建议包名用“域名的倒写.项目名.模块名”的形式,以确保包名的唯一性 注意:类变量与实例变量.类方法与实例方法的区别 ...

  8. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  9. java:数组操作工具类 java.util.Arrays包 主要方法详解

    Arrays类位于Java.util包下,是一个对数组操作的工具类,现将Arrays类中的方法做一个总结(JDK版本:1.6.0_34).Arrays类中的方法可以分为八类: sort(对数组排序) ...

随机推荐

  1. Jackson学习笔记(三)<转>

    概述 使用jackson annotations简化和增强的json解析与生成. Jackson-2.x通用annotations列表:https://github.com/FasterXML/jac ...

  2. Linux下的微秒级别的定时器

    /* * @FileName: test_sleep.c * @Author: wzj * @Brief: * * * @History: * * @Date: 2012年02月07日星期二22:20 ...

  3. IEnumerable<T> 转换为数组

    IEnumerable<User> userlist=xxxx; string[] ids=userlist.select(u=>u.id).toArray();

  4. PTC FlexPLM rfa 常用功能api

    1.根据款号查询产品 public LCSProduct GetProductByName(String SKC) throws WTException { //声明查询 PreparedQueryS ...

  5. 深入浅出学习hibernate框架(三):java的反射机制

    上篇博客写到了JDBC的基本操作,今天准备写一篇关于JAVA反射机制的文章,因为java的反射机制和上一篇JDBC都是Hibernate框架的基本要素.在Hibernate的运行机制中,这两块的内容正 ...

  6. mysql深坑之--group_concat有长度限制!!!!默认1024

    在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更 ...

  7. http://www.gasi.ch/blog/inside-deep-zoom-1/

    In March 2007 Blaise Aguera y Arcas presented Seadragon & Photosynth at TED that created quite s ...

  8. install ubuntu on Android mobile phone

    Android 是基于Linux内核的开源操作系统,主要用在移动设备上.当然同样是基于Linux内核的操作系统,现在支持的Android的智能手机理论来说都能运行基于Linux的操作系统,比如现在流行 ...

  9. tensorflow里面共享变量、name_scope, variable_scope等如何理解

    tensorflow里面共享变量.name_scope, variable_scope等如何理解 name_scope, variable_scope目的:1 减少训练参数的个数. 2 区别同名变量 ...

  10. C++复合类型(结构体)

    其实c++的结构体可以理解为类似于python的字典,我个人理解, 但有区别 先看结构 #include <iostream> 关键字 标记成为新类型的名称 struct inflatab ...