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

    // 可以不断的点出很多函数
Glide.with(PhotoPagerSlitherActivity.this)
.load(output.toByteArray())
.centerCrop()
.crossFade()
.placeholder(R.drawable.app_pic_file_bg)
.into(zoomImageView); // 可以点出很多方法,也可以点吃一个方法,非常灵活
Glide.with(PhotoPagerSlitherActivity.this)
.load(output.toByteArray())
//.centerCrop()
//.crossFade()
//.placeholder(R.drawable.app_pic_file_bg)
.into(zoomImageView);

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

以下举例实现:

/**
* 定义一个工具类接口
* @author Liudeli
*/
public interface IUtil { /**
* 此函数目的就是打印一句话
*/
public void getPrintln1(); /**
* 此函数目的就是打印一句话
* 返回对象为接口的子类自己
*/
public Util getPrintln2();
} /**
* 此类用于某个方法的打印
* @author Liudeli
*/
public class Util implements IUtil{ /**
* 此方法非常简单,就是打印一句话
*/
public void getPrintln1() {
System.out.println("getPrintln2...");
} /**
* 此方法非常简单,就是打印一句话
* @return 返回对象本身:当前对象
*/
public Util getPrintln2() {
System.out.println("getPrintln2...");
// this 放回当前对象
return this;
} } /**
* @author Liudeli
*/
// 测试程序
public class Main { public static void main(String[] args) { // IUtil是父类,他去new自己的子类,当然没任何问题
IUtil util = new Util(); util.getPrintln1(); util.getPrintln2(); } }

运行结果:


放回当前对象的好处:

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

/**
* @author Liudeli
*/ // 测试程序
public class Main2 { public static void main(String[] args) { // IUtil是父类,他去new自己的子类,当然没任何问题
IUtil util = new Util(); util.getPrintln1(); util.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2()
.getPrintln2() // 省略.... ; } }

运行结果:

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


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

刘德利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. SSL原理分析

    SSL协议的工作流程: 服务器认证阶段:       1)客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接:      2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则 ...

  2. bug-ajax

    ajax 的get 方法参数及url的长度有限制 问题:url的参数只有一个url?id=101001000000000000000001 参数过长,ajax会报错. 解决方法:1,把get换成pos ...

  3. JS中如何处理多个ajax并发请求?

    js中的多并发处理. 通常 为了减少页面加载时间,先把核心内容显示处理,页面加载完成后再发送ajax请求获取其他数据 这时就可能产生多个ajax请求,为了用户体验,最好是发送并行请求,这就产生了并发问 ...

  4. zoj1004-Anagrams by Stack 【栈 dfs】

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4 Anagrams by Stack Time Limit: 2 Seconds ...

  5. Microsoft SQL Server, 错误:4064的解决方法 (转载)

    SQL SERVER – Fix : Error: 4064 – Cannot open user default database. Login failed. Login failed for u ...

  6. OC 线程操作 - GCD使用 - 栅栏函数

    - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //同步函数无需栅栏函数 //栅栏 ...

  7. Spring框架的属性注入

    1. 对于类成员变量,常用的注入方式有两种 * 构造函数注入(没有空的构造方法注入) * 属性setter方法注入(有空的构造方法注入) 2. 在Spring框架中提供了前两种的属性注入的方式 1. ...

  8. Task/Parallel实现异步多线程

    代码: #region Task 异步多线程,Task是基于ThreadPool实现的 { //TestClass testClass = new TestClass(); //Action<o ...

  9. PAT 1059 C语言竞赛(20)(代码+思路)

    1059 C语言竞赛(20 分) C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨 ...

  10. Maven + spring + Mybatis + SpringMVC

    tomcat版本:apache-tomcat-7.0.70 一.新建一个maven的web项目 1.1.请勾选“Create a simple project”,创建一个简单的项目,这里不使用模板.也 ...