Duvida

Boas! Tenho uma dúvida numa classe Enum. O seguinte código é aplicado numa rotina do tipo boolean.

public boolean éÚltimaEstaçãoDaRota() { return this == values()[values().length - 1]; }

A minha dúvida é o significado da expressão do return. Eu sei que devolve verdadeiro (1) caso o valor for igual ao último objecto ( neste caso se for a última estação ) e falso (0) se for um valor anterior. A minha duvida está mesmo na expressão:

return this == values()[values().length - 1];

return this? o this refere-se a quê? E a igualdade é feita de que maneira? Tbm não sabia que o values() podia ser usado desta maneira para verificar o último objecto da classe.

Obrigado previamente, cumprs.