guava Lists.transform 踩过的坑
生活随笔
收集整理的這篇文章主要介紹了
guava Lists.transform 踩过的坑
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2019獨角獸企業(yè)重金招聘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;} }執(zhí)行結(jié)果:?
case1 start case1 end case2 start / by zero case2 endcase2比case1多了一步,在使用Lists.transform的時候?qū)⑥D(zhuǎn)換結(jié)果,用Lists.newArrayList 重新產(chǎn)生一個新的list。以確保function內(nèi)的代碼(比如調(diào)用遠程方法,操作數(shù)據(jù)庫等容易拋出異常的代碼)立即被執(zhí)行,而不是在要使用的時候執(zhí)行,從而導致異常沒有在預期的地方被捕獲。
轉(zhuǎn)載于:https://my.oschina.net/phridem/blog/866531
總結(jié)
以上是生活随笔為你收集整理的guava Lists.transform 踩过的坑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu录制GIF动画
- 下一篇: Tcl与Design Compiler