11. Java
for-if-spaghetti
List<String> result = new ArrayList<String>();
for(Integer integer: integers) {
if(integer > 10) {
result.add(“Int: ” + integer);
}
}
val result = integers.filter[it > 10].map[“Int” + it]
Xtend
functional programming
12. Java
if-else-spaghetti
String result = null;
if(foo != null) {
result = foo.value;
}
String result;
if(bar != null) {
result = bar;
} else {
result = “unset”;
}
val result = foo?.value
val result = bar ?: “unset”
Xtend
null-safe operators
17. Java
immutable class boilerplate
@Data class Point {
int x
int y
}
public class Point {
private final int x;
private final int y;
public
public
public
public
public
public
Foo(int x, int x) { ... }
int getX() { ... }
int getY() { ... }
int hashCode() { ... }
boolean equals(Object obj) { ... }
String toString() { ... }
}
Xtend
@Data annotation
18. Java
getter/setter boilerplate
public class Point {
private int x;
private int y;
public
public
public
public
int getX() { ...
int getY() { ...
void setX(int x)
void setY(int y)
}
}
{ ... }
{ ... }
class Point {
@Property int x
@Property int y
}
}
Xtend
@Property annotation
19. Java
boilerplate or design pattern
public class MyClass {
...
...
...
...
...
...
...
...
...
...
...
...
{
{
{
{
...
...
...
...
}
}
}
}
@MyAnnotation class MyClass {
...
}
}
Xtend
active annotation