This is based on - http://www.infoq.com/presentations/Groovy-for-Java-Programmers
Groovy is a JVM scripting language, it supports dynamically typed variable, comes with groovyc (interpreter), groovyConsole (small Swing editor). It interoperates with Java seamlessly - can call any Java method and use any Java class. The same holds true for Java - it can call into groovy scripts.
Example 1:
class GroovyPerson {
// dynamically typed - no semi colons needed.
def age
// statically typed
String name
def printName() {
println name
}
static void main(String[] args) {
// default constructor can accept any number of properties - no getters/setters
def person = new GroovyPerson(age:7, name: 'Jake')
person.printName()
}
}
Example 2:
def cal = Calendar.instance
cal.clear() -- parens required if not passing params to a method
cal.set Calendar.MONTH, Calendar.JULY -- parens optional if passing params to method.
cal.set Calendar.DATE, 4
cal.set Calendar.YEAR, 1776
def time = cal.time
println time
Change 2 to Example 3:
def cal = Calendar.instance
cal.with { -- with() method is added to all classes in java because of groovy to support this usage.
clear()
set MONTH, JULY
set DATE, 4
set YEAR, 1776
println time
}
with {} method on an object lets us remove cal. from within the with block.
Everything is Groovy is an object.
Example 4:
result = 10
println result.class
Example 7: List
names = ['Watsh', 'Manish', 'Saket']
println names.class -- java.util.ArrayList.
names << 'Rahul' //-- add to the list
println names
Example 8: Maps
myMap = [name:'Watsh', language: 'Groovy']
myMap.town = 'San Ramon' -- put value in map for town key
myMap['company'] = 'Brocade' -- put value in map for company key
println myMap.getClass() -- java.util.LinkedHashMap (default)
println myMap.company
Example 9: Class - no getter/setter for properties
class BaseballTeam {
def city
def team
def getDisplayName() {
"$city $team"
}
}
myTeam = new BaseballTeam(team: 'Bulls', city: 'San Ramon')
println myTeam.team
println myTeam.city
println myTeam.getDisplayName()
Example 10: Closure
myClosure = {
println "This is closure object $it" -- 'it' is implicit object for a closure.
}
3.times myClosure -- times() method on Integer can take a closure and invoke it n times.
outputs:
This is closure object 0
This is closure object 1
This is closure object 2
Return statement is optional. If no return statement found, the last statement in method is evaluated and returned.
Example 11: More Closure
// passing argument to closure
3.times {firstArg ->
println "The argument is $firstArg"
}
// using closure to iterate a hashmap
data = [company:'Brocade',
name: 'Watsh']
data.each {key, value ->
println "$key is $value"
}
Groovy is a JVM scripting language, it supports dynamically typed variable, comes with groovyc (interpreter), groovyConsole (small Swing editor). It interoperates with Java seamlessly - can call any Java method and use any Java class. The same holds true for Java - it can call into groovy scripts.
Example 1:
class GroovyPerson {
// dynamically typed - no semi colons needed.
def age
// statically typed
String name
def printName() {
println name
}
static void main(String[] args) {
// default constructor can accept any number of properties - no getters/setters
def person = new GroovyPerson(age:7, name: 'Jake')
person.printName()
}
}
Example 2:
def cal = Calendar.instance
cal.clear() -- parens required if not passing params to a method
cal.set Calendar.MONTH, Calendar.JULY -- parens optional if passing params to method.
cal.set Calendar.DATE, 4
cal.set Calendar.YEAR, 1776
def time = cal.time
println time
Change 2 to Example 3:
def cal = Calendar.instance
cal.with { -- with() method is added to all classes in java because of groovy to support this usage.
clear()
set MONTH, JULY
set DATE, 4
set YEAR, 1776
println time
}
with {} method on an object lets us remove cal. from within the with block.
Everything is Groovy is an object.
Example 4:
result = 10
println result.class
outputs: class java.lang.Integer
Example 5:
aString = 'This is a string' -- a regular String is single quoted
answer = 42
aGString = "The answer is $answer" -- a GString (may contain embedded groovy code) is double quoted
Example 6:
message = 'Groovy Is Cool' --- last character in string is -1 index, first is 0 index.
println message[0] //G
println message[-4] // C
println message[0..5] // Groovy
println message[-4..-1] //Cool
println message[-1..-4] // looC -- substrings can be gotten with ranges
names = ['Watsh', 'Manish', 'Saket']
println names.class -- java.util.ArrayList.
names << 'Rahul' //-- add to the list
println names
Example 8: Maps
myMap = [name:'Watsh', language: 'Groovy']
myMap.town = 'San Ramon' -- put value in map for town key
myMap['company'] = 'Brocade' -- put value in map for company key
println myMap.getClass() -- java.util.LinkedHashMap (default)
println myMap.company
Example 9: Class - no getter/setter for properties
class BaseballTeam {
def city
def team
def getDisplayName() {
"$city $team"
}
}
myTeam = new BaseballTeam(team: 'Bulls', city: 'San Ramon')
println myTeam.team
println myTeam.city
println myTeam.getDisplayName()
Example 10: Closure
myClosure = {
println "This is closure object $it" -- 'it' is implicit object for a closure.
}
3.times myClosure -- times() method on Integer can take a closure and invoke it n times.
outputs:
This is closure object 0
This is closure object 1
This is closure object 2
Return statement is optional. If no return statement found, the last statement in method is evaluated and returned.
Example 11: More Closure
// passing argument to closure
3.times {firstArg ->
println "The argument is $firstArg"
}
// using closure to iterate a hashmap
data = [company:'Brocade',
name: 'Watsh']
data.each {key, value ->
println "$key is $value"
}
No comments:
Post a Comment