自己使用了一个第三方框架,发现非常的灵活,于是去研究了下,才知道是返回当前对象,才可以做到,例如以下案例:

  1. // 可以不断的点出很多函数
  2. Glide.with(PhotoPagerSlitherActivity.this)
  3. .load(output.toByteArray())
  4. .centerCrop()
  5. .crossFade()
  6. .placeholder(R.drawable.app_pic_file_bg)
  7. .into(zoomImageView);
  8. // 可以点出很多方法,也可以点吃一个方法,非常灵活
  9. Glide.with(PhotoPagerSlitherActivity.this)
  10. .load(output.toByteArray())
  11. //.centerCrop()
  12. //.crossFade()
  13. //.placeholder(R.drawable.app_pic_file_bg)
  14. .into(zoomImageView);

于是去研究了下,之所以可以无限制的点出很多方法,是因为它返回当前对象自己:

以下举例实现:

  1. /**
  2. * 定义一个工具类接口
  3. * @author Liudeli
  4. */
  5. public interface IUtil {
  6. /**
  7. * 此函数目的就是打印一句话
  8. */
  9. public void getPrintln1();
  10. /**
  11. * 此函数目的就是打印一句话
  12. * 返回对象为接口的子类自己
  13. */
  14. public Util getPrintln2();
  15. }
  16. /**
  17. * 此类用于某个方法的打印
  18. * @author Liudeli
  19. */
  20. public class Util implements IUtil{
  21. /**
  22. * 此方法非常简单,就是打印一句话
  23. */
  24. public void getPrintln1() {
  25. System.out.println("getPrintln2...");
  26. }
  27. /**
  28. * 此方法非常简单,就是打印一句话
  29. * @return 返回对象本身:当前对象
  30. */
  31. public Util getPrintln2() {
  32. System.out.println("getPrintln2...");
  33. // this 放回当前对象
  34. return this;
  35. }
  36. }
  37. /**
  38. * @author Liudeli
  39. */
  40. // 测试程序
  41. public class Main {
  42. public static void main(String[] args) {
  43. // IUtil是父类,他去new自己的子类,当然没任何问题
  44. IUtil util = new Util();
  45. util.getPrintln1();
  46. util.getPrintln2();
  47. }
  48. }

运行结果:


放回当前对象的好处:

  1. // 可以不断的点出很多函数
  2. Glide.with(PhotoPagerSlitherActivity.this)
  3. .load(output.toByteArray())
  4. .centerCrop()
  5. .crossFade()
  6. .placeholder(R.drawable.app_pic_file_bg)
  7. .into(zoomImageView);

  1. /**
  2. * @author Liudeli
  3. */
  4. // 测试程序
  5. public class Main2 {
  6. public static void main(String[] args) {
  7. // IUtil是父类,他去new自己的子类,当然没任何问题
  8. IUtil util = new Util();
  9. util.getPrintln1();
  10. util.getPrintln2()
  11. .getPrintln2()
  12. .getPrintln2()
  13. .getPrintln2()
  14. .getPrintln2()
  15. .getPrintln2()
  16. .getPrintln2()
  17. .getPrintln2()
  18. .getPrintln2()
  19. .getPrintln2()
  20. .getPrintln2()
  21. .getPrintln2()
  22. .getPrintln2()
  23. .getPrintln2()
  24. .getPrintln2()
  25. .getPrintln2()
  26. .getPrintln2()
  27. .getPrintln2()
  28. .getPrintln2()
  29. // 省略....
  30. ;
  31. }
  32. }

运行结果:

谢谢大家观看,还有很多很多不完善的点!!!


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,

刘德利CSDN博客, http://blog.csdn.net/u011967006

Java返回当前对象的好处的更多相关文章

  1. Java学习——面对对象的思想入门

          本文是看过<head first Java>之后的一点感悟,写点东西帮忙以后回忆,Java目前在我的工作中用到还不多,而我又对面对对象的编程非常的感兴趣.曾经在MFC平台上写过 ...

  2. 【JAVA】 02-Java对象细节

    链接: 笔记目录:毕向东Java基础视频教程-笔记 GitHub库:JavaBXD33 目录: <> <> 内容待整理: 面向过程: 代表语言-c:即通过函数体现,并不断调用函 ...

  3. 类型转换及返回json对象的问题

    @ResponseBody @RequestMapping(value="/user/getUserId.do")//method=RequestMethod.POST publi ...

  4. Java提高篇——对象克隆(复制)

    假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...

  5. java 创建string对象机制 字符串缓冲池 字符串拼接机制

    对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...

  6. Java的常用对象①②

    Java的常用对象① Java的常用对象有很多,这里只对lang包中常用的Object,Date(Calendar,DateFormat,Math),System,Runtime进行介绍.㈠Objec ...

  7. 奇妙的动态代理:EF中返回的对象为什么序列化失败

    今天有如鹏的学生遇到一个问题:把一个对象保存到Session中(进程外Session)后,Web服务器重启,当从Session读取这个对象的时候报错,提示是一个“T_Users”后面跟着一大串数字的类 ...

  8. java中直接打印对象

    java中直接打印对象,会调用对象.toString()方法.如果没有重写toString()方法会输出"类名+@+hasCode"值,hasCode是一个十六进制数 //没有重写 ...

  9. 对Java“一切皆对象”的理念的理解

    在从HelloWorld到面向对象中,我们将int, float, double, boolean等称为基本类型(primitive type),也就是特殊的类.我们可以将一个整数理解称为一个int类 ...

随机推荐

  1. zabbix3.2的server和zabbix-agent2.2怎么监控MySQL的办法

    zabbix官方支持监控MySQL,但直接使用默认的模板是不可用的,还需要经过额外的设置才可以使用.如果只需要对mysql数据库做简单的监控,zabbix自带的模板完全能够满足要求:如果有更高的需求那 ...

  2. Spring Retry

    最近组内准备将项目中原有的重试功能抽取出来重构为一个重试平台,由于对重试的功能要求比较高,采用了不少中间件和框架(jimdb,jproxy, Elastic-Job ,JMQ,Hbase, Disru ...

  3. 阿里云SSL证书tomcat配置

    1. SSL证书申请 登录阿里云控制台,查看购买域名中有SSL证书的申请,ssl证书申请中有单域名的申请,配置要申请的域名信息(注意:一个域名下,一次只能添加一个证书,最多申请3个免费证书用于测试), ...

  4. np.eye()

    今天在完成深度学习的相关编程作业的时候,发现代码中出现了一个关于np.eye()的函数,这个函数的用法非常的简单,但是在预制的代码中,这个函数的用法并非单单制造一个对角矩阵,而是通过其来将一个labe ...

  5. windows驱动

    DriveEntry() 启动 停止 接口函数 驱动程序名 驱动程序版本号 异常处理 是否运行 声明LPOReceive类型的函数 声明函数指针(外部传进来的回调函数) 存放配置字符串 本机IP 串口 ...

  6. win7安装qt5 纯记录 水文

    去qt官网下载http://www.qt.io/看见download就点进去看看吧 目前的下载地址路径是http://www.qt.io/download-open-source选择Offline I ...

  7. 运行 .jar dos 命令

    命令行进入 jar  所在文件夹 执行 java -jar  a.jar;

  8. list集合如何对里面的元素进行排序

    Collections 是集合的公共类,提供各种工具,其中提供了排序方法. Collections.sort(),方法两个参数,1,要排序的集合,2.排序方式 下面是匿名内部类,实现了排序借口,你也可 ...

  9. 关于EmitMapper,映射配置

    public static T Snapshoot<T>(this XtraForm form, T obj) { var config = new DefaultMapConfig(); ...

  10. spring+hibernate 整合异常 Class 'org.apache.commons.dbcp.BasicDataSource' not found

    解决方法 添加 commons-dbcp.jar和commons-pool.jar包