Этот тип конструкции называется anonymous class.
Пример:
interface Mapper {
public double f(double x, double y);
}
Mapper m = new Mapper() {
@Override // this annotation is not mandatory, but good practice!
public double f(double x, double y) {
return 10 * Math.sin(x/10) * Math.cos(y/20) * x;
}
}
Это было бы так же, как это:
public class MyMapper implements Mapper {
@Override
public double f(double x, double y) {
return 10 * Math.sin(x/10) * Math.cos(y/20) * x;
}
}
// and then constructing like this:
Mapper mapper = new MyMapper();
Эта концепция/конструкция удобна, если вы хотите сделать что-то быстро.
С Java 8 этого типа вещей было стать еще более проще с Lambda Expressions:
Mapper mapper =() -> return 10 * Math.sin(x/10) * Math.cos(y/20) * x;
Хорошая книга о лямбда-выражений в Java 8: Lambda Reference by Angelika Langer & Klaus Kreft
http://docs.oracle.com /javase/tutorial/java/javaOO/anonymousclasses.html – khelwood