En el codigo que mandas no veo que estes creando explicitamente el objeto session, asi que asumo que Session es una interface. Nuevamente te indico que una interface, en este caso, solo es un "filtro" hacia un objeto existente, que te indica que' metodos puedes invocar hacia el. No es que sea "una interfaz invocando metodos", es efectivamente un objeto, de no se que clase, pero que mirado con el filtro Session, sabemos que tiene un metodo que podemos invocar de el.
Un ejemplo para explicarlo de otra manera:
Código Java:
Ver originalInterface Animal {
void respirar();
}
class Perrro implements Animal {
void respirar() { // hacer que el perro respire
}
}
class Gato implements Animal {
void respirar() { // hacer que el gato respire
}
}
y luego tener un metodo que reciba un Animal
Código Java:
Ver originalvoid miGranMetodo( Animal animal ) {
// y en medio de el...
animal.respirar();
}
y este metodo se puede invocar con un gato o un perro, que son clases completamente distintas, sin ninguna relacion entre ellas, pero al metodo no le importa esto, solo le importa que el objeto que uses sea de una clase que haya implementado el metodo resprar, y es este el metodo que va a usar.
Código Java:
Ver originalPerro perro = new Perro();
Gato gato = new Gato();
miGranMetodo(perro);
miGranMetodo(gato);
Cuando en medio de miGranMetodo estas usando animal.respirar() estas usando la interface, pero realmente lo que el compilador hace por ti es ir al metodo que la clase implemento, para el objeto que pasaste como parametro.