Package names
They allows us to separate the code base without any conflicts. Groovy classes must specify their package before the class definition.
// defining a package named com.yoursite package com.project
Imports
In order to refer to any class you need a qualified reference to its package.
Classes
Classes in Groovy starts with class then a name and boby between braces.
class Server { String toString() { "a server" } }
In classes you can define variables at class level
class Server { String name Cluster cluster }
Initializing beans with named parameters and the default constructor.
def server = new Server() server.name = "Obelix" server.cluster = aCluster
A complete basic class
Here is a class with a main function that allows you to execute it as Groovy program.
package com.josdem class Todo{ String name String note static main(String[] args){ Todo todo = new Todo(name:"Tweet",note:"About my site") print todo.dump() } }
Groovy Truth
All objects can be ‘coerced’ to a boolean value: everything that’s null, equal to zero, or empty evaluates to false, and if not, evaluates to true.
def var assert !var var = 0 assert !var var = [] assert !var def name = 'josdem' if (name) { println "hello $name" }
Safe graph navigation
Groovy supports a variant of the . operator to safely navigate an object graph.
println order?.customer?.address
Nulls are checked throughout the call chain and no NullPointerException will be thrown if any element is null, and the resulting value will be null if something’s null.
Elvis operator for default values
The Elvis operator is a special ternary operator shortcut which is handy to use for default values.
def name = 'josdem' //1 def result = name!=null ? name : "Unknown" //2 result = name ?: "Unknown" //3
Note: Line 2 and 3 are equivalents
Another expression-based way to make decision is the ternary operator.
def programmer = true def activity = programmer ? 'Java' : 'Futbol'
If the value of programmer is true, then the value of the whole expression is the thing between the question mark and colon, if the condition is false, the the expression evaluates the last part.
Catch any exception
If you don’t really care of the exception which are thrown inside your try block, you can simply catch any of them and simply omit the type of the caught exception. So instead of catching the exceptions like in:
try { // ... } catch (Exception t) { // something bad happens }
Annotations
You can easily implement toString method in Groovy using annotations as follow:
@groovy.transform.ToString class User { String name String twitter } print new User(name:'Jose Luis',twitter:'@josdem')
output: User(Jose Luis, josdem)
Another example is TupleConstructor to get parameters as tuple and create our object by constructor
@groovy.transform.ToString @groovy.transform.TupleConstructor class User { String name String twitter } print new User('Jose Luis','josdem')
output: User(Jose Luis, josdem)
Return to the main article