当前位置: 首页 > news >正文

百度搜索不到我的网站/网络营销的好处

百度搜索不到我的网站,网络营销的好处,洛阳网站建设好做不,网站建设微信运营推广大家好啊,上次小乐给大家介绍了Java8最最重要的一个特性——Stream流,点击可以回顾哦。Optional类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这…

大家好啊,上次小乐给大家介绍了Java8最最重要的一个特性——Stream流,点击可以回顾哦。

Optional类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。

1、Optinal对象构建&值获取方法

方法

操作描述

Optionalof(T value)

为非null的值创建一个Optional,如果值为null,则会抛出NullPointerException

OptionalofNullable(T value)

为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。

T get()

如果Optional有值则将其返回,否则抛出NoSuchElementException

T orElse(T other)

如果有值则将其返回,否则返回指定的其它值。

T orElseGet(Supplier extends T> other)

接受Supplier接口的实现用来生成默认值

T orElseThrow(Supplier extends X> exceptionSupplier)

如果有值则将其返回,否则抛出supplier接口创建的异常。

实例代码如下

Optional optional = Optional.of("java8");

​//NullPointerException空指针异常 值不能为空

optional = Optional.of(null);

optional= Optional.ofNullable("java8");

System.out.println(optional.get());

System.out.println(optional.orElse("java"));

System.out.println(optional.orElseGet(()-> "java"));

System.out.println(optional.orElseThrow(()->newRuntimeException()));

​//值可空 推荐使用

optional = Optional.ofNullable(null);//运行时抛出NoSuchElementException异常

System.out.println(optional.get());

System.out.println(optional.orElse("java"));

System.out.println(optional.orElseGet(()-> "java"));

System.out.println(optional.orElseThrow(()->new RuntimeException()));

2、Optional 逻辑判断操作

这里可以使用Optional提供的API相关方法来执行逻辑判断操作 .

方法

操作描述

boolean isPresent()

如果Optional实例值存在返回true,否则返回false

void ifPresent(Consumer super T> consumer)

如果Optional实例有值则为其调用consumer,否则不做处理 。隐士地其中进行了null判断。

Optionalmap(Function super T, ? extends U> mapper)

如果有值,则对其执行调用map参数中的函数得到返回值,否则返回空Optional

T orElseGet(Supplier extends T> other)

接受Supplier接口的实现用来生成默认值

T orElseThrow(Supplier extends X> exceptionSupplier)

如果有值则将其返回,否则抛出supplier接口创建的异常。

3、用户记录查询-消除null判断

以用户模块为例,UserService中提供queryUserById方法供客户端调用,如下:

public User queryUserById(Integer userId){

return null;

}

客户端调用Java8以前逻辑代码为例避免null通常为如下形式

User user= userService.queryUserById(10);if(null !=user){

System.out.println("匹配到该用户");/*** 执行其他操作*/}else{

System.out.println("用户不存在");

}

使用Optional 形式如下:

Optional userOptional =Optional.ofNullable(user);//使用isPresent 方法进行判断

if(userOptional.isPresent()){

System.out.println("匹配到该用户");/*** 执行其他操作*/}else{

System.out.println("用户不存在");

}

当然,既然使用了Optional了,对于if else 的代码通常也是可以给省略掉 如下(程序逻辑只关注非空的情况,使用ifPresent 进行if判断):

//使用ifPresent 执行if 判断操作

userOptional.ifPresent((u)->{

System.out.println("匹配到该用户");/*** 执行其他操作*/});

使用map orElse方法同样也可以执行if else的逻辑判断 如下:

userOptional.map((u) ->{

System.out.println("匹配到该用户!");/*** 执行其他操作*/

returnu;

}).orElse(null);

4、业务逻辑结果返回

通常,在在web网站时,对于用户登录逻辑进行处理时,如果登录的结果通常由后端接口来返回,而对于后端代码的实现在Java8以前可能是这样的 借助ResultInfo 返回用户登录结果

ResultInfo resultInfo=null;

user=userService.queryUserByUnameAndUpwd(uname,upwd);//判断user对象是否为空

if (user == null) { //用户不存在

resultInfo=new ResultInfo(300,"登录失败,用户名或密码错误",null);

}else{

resultInfo=new ResultInfo(200,"登录成功",user);

}

此时,使用Optional map orElse同样可以进行替换如下(省去if else 的逻辑代码)

userOptional=Optional.ofNullable(userService.queryUserByUnameAndUpwd(uname,upwd));//执行 map orElse 判断

userOptional.map((u)->{/*** 如果用户记录存在*/

return new ResultInfo(200,"登录成功",u);

}).orElse(new ResultInfo(300,"登录失败,用户名或密码错误",null));

5、Optional 值过滤

方法

描述

Optionalfilter(Predicate super T> predicate)

如果有值并且满足断言条件返回包含该值的Optional,否则返回空Optional

filter方法在Optinal对象非空的基础之上加入断言判断操作,方法返回值仍然为Optinal。这种操作对于参数判断提供很大便利,例如参数满足指定条件的后续操作sql查询操作字符串拼接,常见的servlet处理多请求页面转发处理等操作。

页面转发过滤

在使用Servlet 编写web 后端代码对页面进行转发控制时,通常会通过一个Servelt 来转发不同步请求以及相应页面,使用Optional 来达到参数合法性过滤的操作,相关如下:

String action = "main";

Optional optional =Optional.ofNullable(action);

String page= optional.filter(a -> a.trim().equals("") || a.equals("main"))

.map((str)->{

System.out.println("转发到主页面");return "main";

}).orElseGet(()->{

System.out.println("抓发到首页面");return "index";

});

多条件动态sql参数过滤

对于web应用多条件查询操作,通常后端在进行处理时更多的是对sql进行动态拼接来达到最终目的(搜索引擎除外),此时Optional同样能够用于该场景下参数值过滤操作,相关代码如下:

String title = "";

String type= "";

StringBuilder sqlBuilder= new StringBuilder("select * from blog where user_id=2019 ");

Optional.ofNullable(title)

.filter(StringUtils::isNoneBlank)

.ifPresent(t->{

sqlBuilder.append(" and title " + "%" + title + "%");

});

Optional.ofNullable(type)

.filter(t-> !t.trim().equals("") && !t.equals("1"))

.ifPresent(t->{

sqlBuilder.append(" and type = " +type);

});

6、Optional应用

Java8中Optional的引入,使得开发避免了大量Null指针的出现,借助相关方法避免了if else这种繁琐的逻辑代码编写,对于其应用,在处理空的场景下应用较多,对于if else的逻辑场景,同样使用Optional让程序更加简洁,同时使用Optional可以实现代码的链式处理。

http://www.jmfq.cn/news/4852639.html

相关文章:

  • 网站建设应考虑哪些方面的问题/百度推广费用怎么算
  • 沈阳手机网站建设/宁德市高中阶段招生信息平台
  • php动态网站建设内容/seo外包网络公司
  • 自己怎样做优惠券网站/汕头搜索引擎优化服务
  • 青岛企业级网站设计/网络工具
  • 泰安网络犯罪案件/昆明自动seo
  • 慧聪网郭凡生/宁波seo排名方案优化公司
  • 网站怎么建设在哪里接单/免费广告投放平台
  • 网站快照优化怎么做/怎么宣传网站
  • 上海那家公司做响应式网站建设/seo资料网
  • 英文医疗网站建设/推广免费
  • 怎么在百度做原创视频网站/制作网页用什么软件
  • 学室内设计网站/百度如何做推广
  • 网站怎么做?/有什么好的网站吗
  • qq免费的推广引流软件/seo案例分析及解析
  • 有哪些网站做美食的图片很精致/网站外链发布平台
  • 做个网站怎么做/深圳seo外包公司
  • 网站建设销售技巧和话术/百度网站流量查询
  • 惠州网/百度手机端排名如何优化
  • 小程序申请流程/开封seo公司
  • 手机移动端网站做多大/暴风seo论坛
  • 微商/百度上做优化
  • 织梦手机网站怎么安装/qq群推广拉人
  • 杭州知名网站制作公司/seo长沙
  • 二手优品哪个网站做/厦门seo推广外包
  • 中国建设网建设通官方网站/网址查询站长工具
  • 去别人网站挂黑链/推广方案流程
  • 郑州做网站的公司哪家/网站seo优化方案项目策划书
  • wordpress时光轴页面/免费seo快速排名工具
  • 网站地图怎么弄/seo谷歌外贸推广