JAva 8のlambda
2039 ワード
以前の年:0
scalaを使ったことがあって、javaを使って、いつも冗長でダラダラしたjavaに耐えられませんが、scalaはどこでも使えるわけではありません.javaという武器はやはり使わなければなりません.JAva 8の後にlamdbaを導入し、ナイフがより使いやすくなりました.冗談を言って、lambdaを使った後、コードは1/3少なくすることができて、葛藤する匿名のクラスが少なくなって、冗長for循環とifが少なくなりました..else.簡潔なlamdba式、強力なstreamApi、強化版interfaceが増えました.数年来、Assemblerモードは必ず少なくなくてはいけなくて、変化を隔離するために、POとDTOの転化で、POとModelの転化で、重複コードを減らしてやっと品質を高めることができます.匿名はずっと前に突き進み、静的な方法+無数の匿名Callbackが隅々に広がっている.閉包の到来はこのような状況を緩和し、刀はもっと軽くなった.少し重いですが、cの関数ポインタに及ばないほど、少なくともパッケージがよく、応用面で使いやすいです.
forサイクルとif...elseはただ茫漠とした海の中で、心の中のあなたを見つけるためです.
このようなコードは、手の中で何回弾いたか分からない!このようなコードを書くたびに葛藤し、StreamApiがない時代はGoogleGuavaで緩和するしかない.このようなコードを読むたびに、私はその意味を読むことができます.このようなコードを変更するたびに、間違いがないことを祈っています.StreamAPIは最も強力なツールではなく、scalaほどよくありませんが、javaerがコードを最適化し、よりよく読み、よりよく修正するのに十分です.千言万語化成:
拡張版のinterfaceはデフォルトの方法を追加しただけですが、翼を追加して、インタフェースの意味をより豊かにするのは間違いありません.scalaのtraitに似ていますが.従来の方法では、Durationインタフェースを定義します.
関連する論理は実装クラスでしか実現できないが,defaultメソッドの到来は,
このようなインタフェースこそ生命があり、多彩な行為があり、名実ともにインタフェースであり、単なる概念の表現ではない.さらに,抽象クラスの役割が弱まり,インタフェースクラスが大幅に強化される.その導入は、多くの継承の問題を引き起こすかもしれませんが、これらは問題ではありません.結局、良い刀が磨かれた後も、大侠が磨かれる時間が必要です!!
scalaを使ったことがあって、javaを使って、いつも冗長でダラダラしたjavaに耐えられませんが、scalaはどこでも使えるわけではありません.javaという武器はやはり使わなければなりません.JAva 8の後にlamdbaを導入し、ナイフがより使いやすくなりました.冗談を言って、lambdaを使った後、コードは1/3少なくすることができて、葛藤する匿名のクラスが少なくなって、冗長for循環とifが少なくなりました..else.簡潔なlamdba式、強力なstreamApi、強化版interfaceが増えました.数年来、Assemblerモードは必ず少なくなくてはいけなくて、変化を隔離するために、POとDTOの転化で、POとModelの転化で、重複コードを減らしてやっと品質を高めることができます.匿名はずっと前に突き進み、静的な方法+無数の匿名Callbackが隅々に広がっている.閉包の到来はこのような状況を緩和し、刀はもっと軽くなった.少し重いですが、cの関数ポインタに及ばないほど、少なくともパッケージがよく、応用面で使いやすいです.
forサイクルとif...elseはただ茫漠とした海の中で、心の中のあなたを見つけるためです.
public List filterXXX(List beFinds){
if(beFinds == null || beFinds.isEmpty()){
return null;
}
List founds = new ArrayList();
for(String s:beFinds){
if(....){
founds.add(s);
}
}
return founds;
}
このようなコードは、手の中で何回弾いたか分からない!このようなコードを書くたびに葛藤し、StreamApiがない時代はGoogleGuavaで緩和するしかない.このようなコードを読むたびに、私はその意味を読むことができます.このようなコードを変更するたびに、間違いがないことを祈っています.StreamAPIは最も強力なツールではなく、scalaほどよくありませんが、javaerがコードを最適化し、よりよく読み、よりよく修正するのに十分です.千言万語化成:
beFinds.stream().filter(s->{...}).collect(Collectors.toList());
拡張版のinterfaceはデフォルトの方法を追加しただけですが、翼を追加して、インタフェースの意味をより豊かにするのは間違いありません.scalaのtraitに似ていますが.従来の方法では、Durationインタフェースを定義します.
public interface Duration {
Date getEndTime();
Date getBeginTime();
}
関連する論理は実装クラスでしか実現できないが,defaultメソッドの到来は,
public interface Duration {
Date getEndTime();
Date getBeginTime();
public default boolean contains(Date d){
return getBeginTime().before(d) && d.before(getBeginTime());
}
public default Long interval(){
return getEndTime().getTime()-getBeginTime().getTime();
}
}
このようなインタフェースこそ生命があり、多彩な行為があり、名実ともにインタフェースであり、単なる概念の表現ではない.さらに,抽象クラスの役割が弱まり,インタフェースクラスが大幅に強化される.その導入は、多くの継承の問題を引き起こすかもしれませんが、これらは問題ではありません.結局、良い刀が磨かれた後も、大侠が磨かれる時間が必要です!!