Java Lambdas and Closures
===

I hear lambdas are coming soon to a Java near you (J8). I found an example of what they will look like on some blog:

    SoccerService soccerService = (teamA, teamB) -> {
        SoccerResult result = null;
        if (teamA == teamB) {
            result = SoccerResult.DRAW;
        }
        else if(teamA < teamB) {
            result = SoccerResult.LOST;
        }
        else {
            result = SoccerResult.WON;
        }

        return result;
    };

So right off the bat:

* Where are `teamA` and `teamB` typed? Or aren't they (like some weird form of generics)?
* Is a lambda a *type* of closure, or is it the other way around?
* What benefits will this give me over a typical anonymous function?	