资源描述:
《Groovy经典入门》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、Submission631©ASERT2007GroovyTutorialDrPaulKingASERT,AustraliaAgile2007-1TopicsIntroduction•LanguageBasics•Closures•BuildersSubmission631©ASERT2007•DataAccess•OtherFeatures•TestingwithGroovy•FurtherIntegration•Grails•MoreInformationAgile2007-2Whatis
2、Groovy?•“GroovyislikeasuperversionofJava.ItcanleverageJava'senterprisecapabilitiesbutalsohascoolproductivityfeatureslikeclosures,Submission631©ASERT2007DSLsupport,buildersanddynamictyping.”Groovy=Java–boilerplatecode+optionaldynamictyping+closures+do
3、mainspecificlanguages+builders+metaprogrammingAgile2007-3GroovyGoodiesOverview•Fullyobjectoriented•Closures:reusableandassignablepiecesofcodeSubmission631©ASERT2007•Operatorscanbe•GPath:efficientoverloadedobjectnavigation•Multimethods•GroovyBeans•Lit
4、eraldeclarationfor•grepandswitchlists(arrays),maps,•Templates,builder,rangesandregularswing,Ant,markup,expressionsXML,SQL,XML-RPC,Scriptom,Grails,tests,MocksAgile2007-4GrowingAcceptance•Aslowandsteadystartbutnowgaininginmomentum;growinginmaturity&min
5、dshareSubmission631©ASERT2007GroovyRecipesPragmaticBookshelfAgile2007-5TheLandscapeofJVMLanguagesoptionalstatictypesSubmission631©ASERT2007DynamicfeaturescallfordynamictypesJavabytecodecallsforstatictypesTheterms“JavaVirtualMachine”and“JVM”meanaVirtu
6、alMachinefortheJava™platform.Agile2007-6GroovyStarterSystem.out.println("Hello,World!");//optionalsemicolon,println'Hello,World!'//System.out,brackets,//main()methoddefname='Guillaume'//dynamictypingprintln"$name,I'llgetthecar."//GStringSubmission631
7、©ASERT2007Stringlonger="""${name},thecarisinthenextrow."""//multi-linestring//withstatictypingassert0.5==1/2//BigDecimalequals()defprintSize(obj){//optionalducktypingprintobj?.size()//safedereferencing}defanimals=['ant','bee','cat']//nativelistsyntax
8、assertanimals.every{pet->//closuresupportpet<'dog'//overloading}Agile2007-7ABetterJava...importjava.util.List;importjava.util.ArrayList;classErase{privateListfilterLongerThan(Liststrings,intlength){ThiscodeListresult=newArrayList();isvalidfor(inti=0;