开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 0

MrFive/java-study

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
java-study
/
optional
/
src
/
test
/
java
/
OptionalTest2.java
java-study
/
optional
/
src
/
test
/
java
/
OptionalTest2.java
OptionalTest2.java 6.00 KB
一键复制 编辑 原始数据 按行查看 历史
MrFive 提交于 2021年05月17日 19:48 +08:00 . init
import entity.Dog;
import entity.User2;
import org.junit.Test;
import java.util.Optional;
import static org.junit.Assert.assertEquals;
/**
* @Author 伍冠源
* @Date 2021年5月10日
* @Description 1不要将null赋给Optional
* 2避免使用Optional.get()。如果你不能证明存在可选项,那么永远不要调用get()。
* 3不要在字段,方法参数,集合中使用Optional。
* 4只有每当结果不确定时,使用Optional作为返回类型。
* 5不要害怕使用map和filter。
* 6不要为了链方法而使用optional 。
* 7使所有表达式成为单行lambda
*/
public class OptionalTest2 {
@Test
public void variable1() {
String str = "something...";
if (str == null) {
throw new IllegalArgumentException("No such variable");
} else {
//100 lines of code
}
}
@Test
public void variable1Refactor1() {
String str = "something...";
String result = Optional.ofNullable(str).orElseThrow(() -> new NullPointerException());
assertEquals(result, str);
}
@Test(expected = NullPointerException.class)
public void variable1Refactor2() {
String str = null;
String result = Optional.ofNullable(str).orElseThrow(() -> new NullPointerException());
}
private String createVariable() {
return "created";
}
private String extracted() {
String str = "something...";
if (str == null) {
return this.createVariable();
} else {
//100 lines of code
}
return str;
}
@Test
public void variable2() {
extracted();
}
@Test
public void variable2Refactor1() {
String str = "something...";
String result = Optional.ofNullable(str).orElseGet(() -> this.createVariable());
assertEquals(result, str);
}
@Test
public void variable2Refactor2() {
String str = null;
String result = Optional.ofNullable(str).orElseGet(() -> this.createVariable());
assertEquals(this.createVariable(), result);
}
@Test
public void variable3() {
extracted2();
}
private String extracted2() {
String str = "something...";
if (str == null) {
return "new variable";
} else {
//100 lines of code
}
return str;
}
@Test
public void variable3Refactor1() {
String str = "something...";
String result = Optional.ofNullable(str).orElse("new variable");
assertEquals(str, result);
}
@Test
public void variable3Refactor2() {
String str = null;
String result = Optional.ofNullable(str).orElse("new variable");
assertEquals("new variable", result);
}
private String dogToString(User2 user) {
if (user != null) {
return "DOG'd name is : " + user.getName();
} else {
return "CAT";
}
}
@Test
public void variable4() {
User2 user = new User2();
String dogString = dogToString(user);
assertEquals("DOG'd name is : null", dogString);
}
private String convertToDog(User2 user) {
return "DOG'd name is : " + user.getName();
}
private String convertToDog2(User2 user) {
return user.getName();
}
@Test
public void variable4Refactor1() {
User2 user = new User2("wgy", "18", null);
String result = Optional.ofNullable(user).map(this::convertToDog).orElse("CAT");
assertEquals("DOG'd name is : wgy", result);
}
@Test
public void variable4Refactor2() {
User2 user = new User2(null, "18", null);
String result = Optional.ofNullable(user).map(this::convertToDog2).orElse("CAT");
assertEquals("CAT", result);
}
private void doBlaBlaBla(Dog dog) {
System.out.println("doBlaBlaBla execute...");
}
@Test(expected = NullPointerException.class)
public void variable5() {
Dog dog = new Dog();
if (dog != null && dog.getIsBigDog()) {
this.doBlaBlaBla(dog);
}
}
@Test
public void variable5Refactor1() {
Optional<Dog> optionalDog = Optional.ofNullable(new Dog());
optionalDog
.filter(dog -> null != dog.getIsBigDog())
.ifPresent(this::doBlaBlaBla);
}
@Test
public void variable5Refactor2() {
Optional<Dog> optionalDog = Optional.ofNullable(null);
optionalDog
.filter(Dog::getIsBigDog)
.ifPresent(this::doBlaBlaBla);
}
/**
* 不要为了链方法而使用optional 。
*/
@Test
public void variable6() {
Dog dog = new Dog();
Optional
.ofNullable(dog)
.ifPresent(this::doBlaBlaBla);
}
/**
* Optional
* .ofNullable(someVariable)
* .map(variable -> {
* try{
* return someREpozitory.findById(variable.getIdOfOtherObject());
* } catch (IOException e){
* LOGGER.error(e);
* throw new RuntimeException(e);
* }})
* .filter(variable -> {
* if(variable.getSomeField1() != null){
* return true;
* } else if(variable.getSomeField2() != null){
* return false;
* } else {
* return true;
* }
* })
* .map((variable -> {
* try{
* return jsonMapper.toJson(variable);
* } catch (IOException e){
* LOGGER.error(e);
* throw new RuntimeException(e);
* }}))
* .map(String::trim)
* .orElseThrow(() -> new RuntimeException("something went horribly wrong."))
* =======================================重构为=============================================
* Optional
* .ofNullable(someVariable)
* .map(this::findOtherObject)
* .filter(this::isThisOtherObjectStale)
* .map(this::convertToJson)
* .map(String::trim)
* .orElseThrow(() -> new RuntimeException("something went horribly wrong."));
*/
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

暂无描述
取消

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/mrfive/java-study.git
git@gitee.com:mrfive/java-study.git
mrfive
java-study
java-study
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /