2019独角兽企业重金招聘Python工程师标准>>>

package com.case;import java.util.List;import com.google.common.base.Function;
import com.google.common.collect.Lists;/*** Step on the pit with guava* * @author James* @version $Id: GuavaListsTransFormCase.java, v 0.1 2017年3月24日 下午8:36:36 James Exp $*/
public class GuavaListsTransFormCase {public static void main(String[] args) {List<A> as = Lists.newArrayList();A a = new A();a.setC(1);as.add(a);try {System.out.println("case1 start");transFormCase1(as);} catch (Exception e) {System.out.println(e.getMessage());} finally {System.out.println("case1 end");}try {System.out.println("case2 start");transFormCase2(as);} catch (Exception e) {System.out.println(e.getMessage());} finally {System.out.println("case2 end");}}private static List<B> transFormCase1(List<A> as) {return Lists.transform(as, new Function<A, B>() {@Overridepublic B apply(A input) {B b = new B();b.setC(input.getC() / 0);//...variablesreturn b;}});}private static List<B> transFormCase2(List<A> as) {return Lists.newArrayList(Lists.transform(as, new Function<A, B>() {@Overridepublic B apply(A input) {B b = new B();b.setC(input.getC() / 0);//...variablesreturn b;}}));}
}class A {private int c;//...variablespublic int getC() {return c;}public void setC(int c) {this.c = c;}}class B {private int c;//...variablespublic int getC() {return c;}public void setC(int c) {this.c = c;}
}

执行结果:

case1 start
case1 end
case2 start
/ by zero
case2 end

case2比case1多了一步,在使用Lists.transform的时候将转换结果,用Lists.newArrayList 重新产生一个新的list。以确保function内的代码(比如调用远程方法,操作数据库等容易抛出异常的代码)立即被执行,而不是在要使用的时候执行,从而导致异常没有在预期的地方被捕获。

转载于:https://my.oschina.net/phridem/blog/866531

guava Lists.transform 踩过的坑相关推荐

  1. java解锁_Java 姿势解锁 —— Lists.transform

    这个用法最初是在工作中读浩哥代码看到的,由于当时时间紧张,粗略看了一下以为就是个生成 List 的方法,于我而言其最多使用的地方在 Entity.Dto.From 间的互转,以至于在今后所有的涉及到转 ...

  2. 阿里云centos环境之linux上redis安装及踩过的坑(七)

    阿里云centos环境之linux上redis安装及踩过的坑<七> 文章目录 阿里云centos环境之linux上redis安装及踩过的坑<七> 第一:下载上传 第二:解压安装 ...

  3. Guava Lists工具类

    文章目录 01 概述 02 Lists工具类 03 文末 01 概述 Guava 是 Google 开源的一个 Java 工具库,里面有很多工具类,本文要讲的是里面的Lists工具类. 注意,使用Gu ...

  4. mac git使用与配置踩过的坑

    #mac git使用与配置踩过的坑 标题mac配置git ssh密钥 参考链接mac配置git ssh key go get安装失败的解决方法 go get约等于git clone+go instal ...

  5. java项目经理也就那么回事_网易PM | 我们之前在需求评审环节踩过的坑...

    原本觉得需求评审也就那么回事儿,大家应该都差不多这么做的,没啥好说的.不过前不久有一位同学问起来我们是怎么做需求评审的,然后发现有一些团队的做法可能还不大一样,他们也还踩着我们之前踩过的坑,他们还在探 ...

  6. Redis 集群部署及踩过的坑

    本文目标 要在单台机器上搭建Redis集群,方式是通过不同的TCP端口启动多个实例,然后组成集群,同时记录在搭建过程中踩过的坑. 安装准备 centos版本:6.7 redis版本:3.2.3 安装方 ...

  7. AWS Device Farm介绍及Appium踩过的坑

    本文记录了在AWS Device Farm上进行Appium TestNG进行手机应用UI自动化测试的流程及遇到的问题,及具体的解决方法.同时记录了使得测试脚本更稳定的一些代码写法. Device F ...

  8. arcgis python 二次开发_我在部署ArcGIS API for Python时踩到的坑

    ArcGIS API for Python相比于其他ESRI产品,还是很年轻.我在部署时踩到了坑,网上也找不到解决方法,很是煞风景,也很打击学习的积极性. 今天回顾一下,做个总结吧.一方面自己备忘,另 ...

  9. 开发路上踩过的坑要一个个填起来————持续更新······(7月30日)

    欢迎转载,请注明出处! https://gii16.github.io/learnmore/2016/07/29/problem.html 踩过的坑及解决方案记录在此篇博文中! 个人理解,如有偏颇,欢 ...

最新文章

  1. oracle ebs 数据源,Oracle EBS环境下查找数据源(Form篇)
  2. git比较两个分支的文件的差异
  3. 韩顺平php视频笔记49 函数深入 php的值传递与引用传递 goto
  4. 编程小技巧 --用VB解决时间同步的问题
  5. Java 序列化和反序列化
  6. IDL实现矢量(shp)裁剪栅格TASK(一)
  7. java实现文件上传下载功能_java文件上传下载功能实现代码
  8. NOR FLASH闪存芯片ID应用之软件保护场景
  9. python 自动批量打开网页
  10. 全国省市区信息,mysql数据库记录
  11. 计算机游戏屏幕中,电脑屏幕上的游戏怎么录制
  12. 评《宁可放弃五十万也要逼你去读书》,作者来自另外一个星球?
  13. Android 一键拨号
  14. 第15课:如何用RPA循环填写表单?(练兵场二)
  15. 计算机毕业设计springboot+vue基本微信小程序的云宠物小程序-宠物领养
  16. KDD2020|PinnerSage:Pinterest推荐中的多模式用户嵌入框架
  17. 企业级云管理平台的架构实现与落地实践、趋势分析
  18. 生化危机5:惩罚 感
  19. Visual Studio配置、创建MFC详细教程
  20. java 聊天机器人 源码_Alice聊天机器人源码及DEMO - 源码下载|Windows编程|网络编程|源代码 - 源码中国...

热门文章

  1. minSdkVersion = targetSdkVersion = compileSdkVersion
  2. QTP中字符串替换函数
  3. android常用工具收集
  4. Keil4 几例异常解决办法
  5. TIME_WAIT状态的一些总结
  6. 1017: 成绩大排队
  7. Spring Data JPA 查询方法支持的关键字
  8. Flex Accordion 和 TabNavigator组件浏览器跳转问题
  9. UITabbarController 实例一
  10. openstack-networking-neutron(一)---端到端和点到点的理解