Java Libraries
There are libraries that can help you do this, by already doing the legwork for you and hiding the arcane things:
Mature / Established Libraries
- Functional Java
- Google guava
- LambdaJ
More Obscure / Experimental Libraries
- Fun4J
- JCurry
- OCaml-Java
- Jambda
- Bolts
These will allow you to write Java code with a more functional approach and possibly more familiar syntax and semantic, as you'd expect from an FP-competent language. Within reason, that is.
JVM Languages
And obviously, you can implement a functional language on top of Java. So that you can then use that one as your FP language. Which is a bit of a higher-level of abstraction than what you asked for, but relatively within context (though I'm cheating a bit here, granted).
For instance, check out:
Quite Mature Languages
Less Mature or More Obscure Languages
Further Reading
You may also want to read or watch these articles or videos:
- Functional Progamming in the Java Language, IBM DeveloperWorks (2004)
- Functional Programming Java, Lambda the Ultimate (2004)
- Functional Programming: a Pragmatic Introduction, InfoQ/CodePalousa (2011)
Taken from my P.SE answer to "Is Functional Programming Possible in Java?"