文档章节

链式编程风格在Java里的应用

DocArc
 DocArc
发布于 2017/05/05 01:59
字数 326
阅读 154
收藏 0

链式编程

所谓的链式编程,则是类似与StringBuffer的append方法的写法:

StringBuffer buffer = new StringBuffer();
// 链式编程
buffer.append("aaa").append("bbb").append("ccc");

如何实现

那么问题来了,怎么实现这种炫酷的连写的代码呢? 其实很简单,那就是在方法的最后写上return this; 如果大家去看看StringBufferappend的源代码,也可以发现,它里面也是这么写的,我们除了在拼接字符串的时候这么用,在什么时候也可以用链式编程呢? 我认为在创建实体bean对象的时候,可以这么写。 如下:

public class Dog {
<span class="pl-k">private</span> <span class="pl-k">int</span> weight; <span class="pl-k">private</span> <span class="pl-smi">String</span> color; <span class="pl-k">private</span> <span class="pl-smi">String</span> dogTye; 

public Dog setWegith(int weight) {
this.weight = weight;
return this;
}

public Dog setColor(String color) {
this.color = color;
return this;
}

public Dog setDogType(String dogType) {
this.dogType = dogType;
return this;
}
}

 

我们在创建这个实体的时候就可以这么写:

Dog dog = new Dog();
// 常规赋值风格
dog.setWeght(20);
dog.setColor("金黄色");
dog.setDogType("金毛犬");
// 链式编程风格
dog.setWeght(20).setColor("金黄色").setDogType("金毛犬");

这样子看起来是不是很简洁呢???反正我觉得这么些挺不错的。

© 著作权归作者所有

共有 人打赏支持
DocArc
粉丝 0
博文 5
码字总数 4592
作品 0
程序员
私信 提问
Clojure使用Java方法

Clojure使用Java方法 Clojure有个很强大的功能,就是你可以使用Lisp语言风格无缝调用java api(java interop).这无疑是如虎添翼. 调用一个Java对象的方法 语法: 其实都使用的是dot operator,形...

程序员诗人
2016/06/28
0
0
Java 程序员的错

编者注:可以喷语言,但不要搞人身攻击! BTW:我也是一名 Java 程序员,哈哈! Java程序员是有问题的。我使用Java编程已经有10多年的历史。同时,我还有过大量的使用其它语言开发的经历,比...

oschina
2014/07/29
7.8K
92
一句话讲清楚什么是JavaEE

摘要: Java技术不仅是一门编程语言而且是一个平台。同时Java语言是一门有着特定语法和风格的高级的面向对象的语言,Java平台是Java语言编写的特定应用程序运行的环境。Java平台有很多种,很多...

qq592fbb5b34ad7
2018/07/02
0
0
Scala入门-大数据云计算下的开发语言

Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的 面向对象编程语言,而又无缝地结合了命令式编程和 函数式编程风格。Christopher Diggins认为:...

liwei2000
2018/06/30
0
0
一起来学大数据|为何学习大数据,要先学Java?之茅塞顿开

大数据的就业、工资的水平等等方面都让更多的人投身进入到学习大数据的旗下。 只要你对大数据有兴趣、有精力、敢于尝试,依旧可以开拓出自己的一片天! 其实,我们也不难发现,在外面报班学习...

董黎明
04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Vue.js开发环境搭建说明(mac)

vue开发环境搭建(mac) 投影放大:cmd + + 安装Node 下载Node 官网下载 https://nodejs.org/en/download/ 安装Node 双击安装包,选择安装目录,比如: /usr/local/bin 安装成功后最好记录一...

Danni3
9分钟前
1
0
Qt编写自定义控件3-速度仪表盘

前言 速度仪表盘,写作之初的本意是用来展示当前测试的网速用的,三色圆环+数码管显示当前速度,Qt自带了数码管控件QLCDNumber,直接集成即可,同时还带有动画功能,其实也可以用在汽车+工业...

飞扬青云
14分钟前
0
0
【论文阅读】Image Super-Resolution via Deep Recursive Residual Network

题目:通过深度递归残差网络实现图像的超分辨率 摘要: 近年来,基于卷积神经网络的模型在单张图像的超分辨率上已经取得了巨大的成功。由于深度网络的强大,这些CNN模型学习了从低分辨率输入...

云烟成雨forever
17分钟前
0
0
为什么强烈建议大家使用枚举来实现单例

关于单例模式,我的博客中有很多文章介绍过。作为23种设计模式中最为常用的设计模式,单例模式并没有想象的那么简单。因为在设计单例的时候要考虑很多问题,比如线程安全问题、序列化对单例的...

群星纪元
35分钟前
11
0
Confluence 6 超过当前许可证期限进行升级

这个页面将会对你在进行 Confluence 升级的时候超过了当前许可证的期限进行升级的情况。 许可证警告 在升级的过程中,你将会在 Confluence 的应用程序日志(log file)中看到类似下面的错误提...

honeymoose
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部