博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
guava Lists.transform 踩过的坑
阅读量:6489 次
发布时间:2019-06-24

本文共 2165 字,大约阅读时间需要 7 分钟。

hot3.png

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 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 transFormCase1(List as) {        return Lists.transform(as, new Function
() { @Override public B apply(A input) { B b = new B(); b.setC(input.getC() / 0); //...variables return b; } }); } private static List
transFormCase2(List
as) { return Lists.newArrayList(Lists.transform(as, new Function
() { @Override public B apply(A input) { B b = new B(); b.setC(input.getC() / 0); //...variables return b; } })); }}class A { private int c; //...variables public int getC() { return c; } public void setC(int c) { this.c = c; }}class B { private int c; //...variables public int getC() { return c; } public void setC(int c) { this.c = c; }}

执行结果: 

case1 startcase1 endcase2 start/ by zerocase2 end

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

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

你可能感兴趣的文章
catch,finally执行遇到return语句怎么办
查看>>
搭建MySQL-Cluster集群架构
查看>>
解决jq双重tab-多个选项卡嵌套关系 封装tab点击和hover事件
查看>>
keepalived原理
查看>>
CSRF攻击与防御(写得非常好)
查看>>
当windows 7系统中程序和功能无法卸载IE9,10,11时的方法
查看>>
清除Linux的无用日志
查看>>
设计模式之建造者模式(Builder)
查看>>
一些儿个人看法
查看>>
ThinkSNSPlus V1.9-V2.0升级指南
查看>>
ssh密钥修改工作记录20130608
查看>>
mysql数据库授权学习记录
查看>>
在 Docker容器中安装WebSphere 8.5
查看>>
CentOS 6更改系统时间后无法启动的解决办法
查看>>
如何实现将默认路由重分发进入OSPF和RIP协议
查看>>
备忘录模式(Memento)
查看>>
月薪3千与3万文案的区别!一字千金就体现在细微之处
查看>>
总结:正则表达式
查看>>
键盘控制----回显与行输入设置
查看>>
linux加入windows域之完美方案
查看>>